大佬教程收集整理的这篇文章主要介绍了快速排序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
快速排序的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所以数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
注意:f是表示指的数比标杆值小的下标值,而b是表示指的数比标杆值大的下标值
void quick_sort(int parr[], int low, int hight) //快速排序
{
int t = parr[low]; //确定标杆值
int f = low + 1; //表示指的数比标杆值小的下标值
int b = hight; //表示指的数比标杆值大的下标值
if (low >= hight) return; //表示只有一个元素,无需定位
int tempval;
while (f <= b)//表示待查找的区间还没有找完(只有f>b才能算找完)
{
while (f <= b && parr[f] <= t) f++;//表示区间没有找完,且f指的数又比标杆小
while (f <= b && parr[b] >= t) b--;//表示区间没有找完,且b指的数又比标杆大
if (f < b)//定位区间还没搜索完,但f指向了比标杆大的数,b指向了比标杆小的数
{
tempval = parr[f];
parr[f] = parr[b];
parr[b] = tempval;
f++;
b--;
}
}
//循环完,b指针应该停在了标杆的位置,f指针停在了标杆的下一个位置
parr[low] = parr[b];
parr[b] = t;
quick_sort(parr, low, b - 1);//标杆的左边递归
quick_sort(parr, b + 1, hight);//标杆的右边递归
}
以上是大佬教程为你收集整理的快速排序全部内容,希望文章能够帮你解决快速排序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。