快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。步骤为:1.从数列中挑出一个元素,称为 “基准”(pivot),2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。递归的最底部情形,是数列
第一、算法描述
快速排序由C. A. R. Hoare在1962年提出,该算法是目前实践中使用最频繁,实用高效的最好排序算法,
快速排序算法是采用分治思想的算法,算法分三个步骤
1.从数组中抽出一个元素作为基数v(我们称之为划界元素),一般是取第一个、最后一个元素或中间的元素
2.将剩余的元素中小于v的移动到v的左边,将大于v元素移动到v的右边
3.对左右两个分区重复以上步骤直到所有元素都是有排序好。
第二、算法实现
/*序列划分函数*/
int partition(int a[], int