描述
快速排序(Quicksort)是对冒泡排序的一种改进。
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。百度百科
实现
void QuickSort(int a[],int left, int right)
{
if(left<right)//这一句一定要有,不然递归调用容易出错
{
int low = left;
int high = right;
int key = a[low];
while(low < high)
{
while(low<high && a[high] > key)//右侧找到第一个比key值小的
{
high--;
}
if(low < high)//交换
a[low++] = a[high];
while(low<high && a[low] < key)//左侧找到第一个比key值大的
{
low++;
}
if(low < high)//交换
a[high--] = a[low];
}
a[low] = key;//放回key值
QuickSort(a,left,low-1);//左侧递归调用
QuickSort(a,low+1,right);//右侧递归调用
}
}