随机中枢快速排序

随机中枢的快速排序算法

思路:
就是在普通的快排的基础上,加上了一行生成随机数的代码,另外加上了一行将生成的随机值和第一个数字进行交换。其余的算法思路都是普通的快速排序 一样的。

#include<iostream>
using namespace std;
#include <vector>
#include<math.h>

vector<int>vt={40,38,46,79,56,84};

int  Quickly_sort(int low,int high,vector<int>&vt){
    
  int pivot=low+rand()%(high-low+1);
    swap(vt[low],vt[pivot]);
    pivot=vt[low];
    while(low<high){
        while(low<high&&vt[high]>=pivot)--high;
        vt[low]=vt[high];
        while(low<high&&vt[low]<pivot)++low;
        vt[high]=vt[low];
    }
    vt[low]=pivot;
    return low;
    
}

void random_pivot_quickly_sort(vector<int>&vt,int low,int high){
    if(low<high){
    int pivot=Quickly_sort(low,high,vt);
   
    random_pivot_quickly_sort(vt,low,pivot-1);
    random_pivot_quickly_sort(vt,pivot+1,high);
    }
    
    
}

void translate(vector<int> vt){
    for(int i=0;i<vt.size();++i){
        cout<<vt[i]<<" ";
    }
}

int main(){
    random_pivot_quickly_sort(vt,0,vt.size());
    translate(vt);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值