快速排序算法代码图文讲解

通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。

快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。

(1)算法步骤

1. 从数列中挑出一个元素,称为 “基准”(pivot);

2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;

递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。

(2)动图演示

(3)C语言代码实现如下:

如果我们编译并运行上述程序,那么它应该产生以下结果:

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

THE END
0.竞赛问题题目描述对一维数组按照从小到大的顺序排序。程序定义函数sort()来实现数组a的排序。函数原型如下: void sort(int a[], int n); 数组元素的输出调用PrintArr()。输入第一行输入一个整数n(1<=n<=10),表示数组有n个整数;第二行输入n个整数。输出输出占一行。对这n个整数数按照从小到大的顺序输出,数据之间jvzq<84ql0€{p~3gfw4dp8hqpvktvhutqdrfo7ujrAijfF6567,qkmB3
1.C语言所有经典排序方法的实现代码C语言这篇文章给大家分享C语言所有经典排序方法,文章给大家提供完整的实例代码帮助大家快速学习掌握C语言排序方法,感兴趣的朋友一起看看吧GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】 运行结果正确 还是快速排序难一些。 完整代码 1 2 3 4 5 6 7 8 9 10 jvzquC41yy}/lk:30pku1jwvkerf1;65;48/j}r
2.1366.通过投票对团队排名请你返回能表示按排名系统排序后的所有团队排名的字符串。 示例1: 输入:votes = ["ABC","ACB","ABC","ACB","ACB"]输出:"ACB"解释:A 队获得五票「排位第一」,没有其他队获得「排位第一」,所以 A 队排名第一。 B 队获得两票「排位第二」,三票「排位第三」。 C 队获得三票「排位第二」,两票「jvzquC41ngkuexig0eun1ywqdnknu8wcpm3ugjru/d.xxygu1