我是靠谱客的博主 粗犷哈密瓜,最近开发中收集的这篇文章主要介绍快速排序简便写法,一次遍历找到pivot,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

“快速排序”简便写法,一次遍历找到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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部