/* 第一部分
快速排序算法是由C.A.R.Hoare教授于上世纪60年代提出的,它的中心思想是:
将一组数据分成两组,其中一组的所有元素值都要小于另一组,并在两组数据中不断的“左右划分”最终达到升序或降序的目的。
其中用于分隔两组数据的关键元素叫做中间数。Quicksort
巧妙的调用自身进行递归演算,依次变化中间数,直到两组中的关键元素重合。
C.A.R.Hoare教授
Quicksort 也被称为“愉快的赌博”,因为它的“最坏情况运行时间”的成绩较差,但在大多数时候,它的性能是非常可观的!所以 尽管存在不稳定的因素,快速排序法也成为了排序算法最佳的实用选择。
*/
快速排序示意图(图像来自百度)
参考代码:(运行环境 Linux,clang)
代码注释:
代码的关键点在于 quicksort 函数,其中,最外层的while循环体中 还包含两个while循环,用于查找在中间数右侧,并且小于中间数(L[ j ]);和在中间数左侧,并且大于中间数(L[
i ])的元素,如果找到了,就将这个元素与中间数(key)调换位置,依次调整元素的位置,如上述代码,L[ i ] 和 L[ j ] 不断向中间数靠拢,最终与中间数重合,结束循环,跳出最外层的while
再将左右两组数组分别作为独立的数组重新带入quicksort函数式中,递归运算,得到新数列。
运行测试:
测试通过。