关于c语言中qsort函数的用法?

能举个列子让我看的明白的吗?

快速排序的思想是分治,就举个简单的例子吧
int a={5,4,8,2,6,3,1,7}
1)分解
选取一个数作为基准(pivot),以此基准将当前无序区R[low,high]划分为左右两个较小的子区间R[low,pivot],R[pivot+1,high],并使左边子区间的数都小于基准数,右边子区间的所有数都大于基准数,基准数位于正确的位置上,无需参加下一轮的排序。
一般取第一个为基准,此处为5,high起往前,若a[j]比5小则与a[i]交换,然后从low起,依次与5作比较,若a[i]大于5则与a[0]交换位置,从如此循环直到前后指针相遇。
过程为:
5,4,8,2,6,3,1,7 //1小与5,交换
1,4,8,2,6,3,5,7 //8大与5,交换
1,4,5,2,6,3,8,7 //3小于5,交换
1,4,3,2,6,5,8,7 //6大于5,交换
1,4,3,2,5,6,8,7 //至此5已到正确位置
2)求解
分别对左右两子区间,递归调用qsort,排序
类似上面的例子,就不详解啦~
3)至此完成整个数组的排序
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜