快速排序
作者:互联网
快速排序
快速排序的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所以数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
快速排序的流程:
注意: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);//标杆的右边递归
}
标签:int,标值,标杆,parr,排序,快速,low 来源: https://www.cnblogs.com/Mr-black-7/p/15969551.html