概述
“快速排序”简便写法,一次遍历找到pivot
int Partition(vector<int>& arr, int l, int r)
{
int i = l, pivot = arr[r]; //将数祖最后一位设为pivot
for(int j = l; j < r; ++j) //j记录比pivot小的值
{ //i记录比pivot大的值
if(arr[j] < pivot)
{
swap(arr[i++], arr[j]); //将大的值和小的值进行交换
}
}
swap(arr[i], arr[r]); //最后将pivot的值与遍历结束位置的值且比它小的值进行交换
return i;
}
void QuickSort(vector<int>& arr, int l, int r)
{
if(l < r)
{
int pivot = Partition(arr, l, r);
QuickSort(arr, pivot + 1, r);
QuickSort(arr, l, pivot - 1);
}
}
vector<int> MySort(vector<int>& arr) {
int l = 0, r = arr.size() - 1;
QuickSort(arr, l, r);
return arr;
}
最后
以上就是粗犷哈密瓜为你收集整理的快速排序简便写法,一次遍历找到pivot的全部内容,希望文章能够帮你解决快速排序简便写法,一次遍历找到pivot所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复