快速排序法

来源:互联网 发布:iface102考勤安装软件 编辑:程序博客网 时间:2024/06/05 04:56

快速排序(Quicksort)是对冒泡排序的一种改进。

基本思想:通过一趟排序将要排序的数据分割成独
立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。


void sort(int *a, int left, int right)//right取值为数组最后一个元素下标,不是数组大小,left取0{if (left >= right){return;}int i = left;int j = right;int key = a[left];while (i < j){while (i < j && key <= a[j]){j--;}a[i] = a[j];while (i < j && key >= a[i]){i++;}a[j] = a[i];}a[i] = key;sort(a, left, i - 1);sort(a, i + 1, right);}

在c\c++中可以用stdlib库中的qsort()qsort 的函数原型是
void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));

其中int(__cdecl*compare)(const void*,const void*)指向函数的指针,用于确定排序的顺序,

comp函数应写为:
intcomp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;
}
上面是由小到大排序,return *(int *)b - *(int *)a; 为由大到小排序。

对字符串进行排序
int Comp(const void*p1,const void*p2)
{
return strcmp((char*)p2,(char*)p1);
}



0 0
原创粉丝点击