快速排序,说起来很简单那,这几天突然想来练练笔,结果,两个字,失败。
快速排序(Quicksort)是对冒泡排序的一种改进。由C.
A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
具体可以参考http://baike.baidu.com/view/19016.htm?from_id=2084344&type=syn&fromtitle=快速排序&fr=aladdin
上述参考地址也是里有各种代码,我只是把c++的代码拷贝过来了,哈哈
/* 从小到大排序*/
void Qsort(int a[],int low,int high)
{
if(low >= high)
{
return;
}
int first = low;
int last = high;
int key = a[first];/*用字表的第一个记录作为枢轴*/
while(first < last)
{
while(first < last && a[last] >= key)
--last;
a[first] = a[last];/*将比第一个小的移到低端*/
while(first < last && a[first] <= key)
++first;
a[last] = a[first];/*将比第一个大的移到高端*/
}
a[first] = key;/*枢轴记录到位*/
Qsort(a, low, first-1);
Qsort(a, last+1, high);/*这里first和last应该相等的,所以应该可以用first*/
}
拷贝过来的目的很简单啊,就是为了某天要用的时候直接翻自己这里就可以了。