快速排序简单易懂

//快速排序算法
    vector<int> quick_sort( vector<int>& arr )
    {
        int m = arr.size();
        if( m==0 ) return arr; //数组有可能为空如[0,1,2,1]
        if( arr.size()==1 ) return arr;

        /*快速排序算法是已空间换时间的算法*/
        /*需要的空间即,存储小于指定数的left数组
          存储大于指定数的right数组,以及需要取出指定数*/
        vector<int> left; 
        vector<int> right;
        int pivot = m/2;


        for( int i=0; i<pivot; ++i )
        {
            if( arr[i]<=arr[pivot] ) left.push_back( arr[i] );
            else right.push_back( arr[i] );
        }
        for( int i=pivot+1; i<m; ++i )
        {
            if( arr[i]<=arr[pivot] ) left.push_back( arr[i] );
            else right.push_back( arr[i] );
        }

        vector<int> nums0 = quick_sort( left );
        nums0.push_back( arr[pivot] );
        vector<int> nums1 = quick_sort( right );
        nums0.insert( nums0.end(),nums1.begin(),nums1.end() );
        return ( nums0 );
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值