快速排序

思路:

      快速排序到关键在于先在数组中选择一个数字,接下来将比选择的数字小的数字移到数组的左边,比选择的数字大的数字移到数组的右边

C++实现:

#include<iostream>
#include<vector>
using namespace std;

void helper(vector<int>& vec,int left,int right);

void quickSort(vector<int>& vec){
    if(vec.size()<=1)
        return;
    int left=0;
    int right=(int)vec.size()-1;
    helper(vec,left,right);
}

void helper(vector<int>& vec,int left,int right){
    int tmp=vec[left];
    int i=left;
    int j=right;
    if(left>right)
        return;
    while(i<j){
        while(vec[j]>=tmp&&i<j)
            --j;
        while(vec[i]<=tmp&&i<j)
            ++i;
        if(i<j)
            swap(vec[i],vec[j]);
    }
    vec[left]=vec[i];
    vec[i]=tmp;
    
    helper(vec,left,i-1);
    helper(vec,i+1,right);
    return;
}

int main(){
    vector<int> vec;
    int num;
    for(int i=0;i<10;i++){
        cin>>num;
        vec.push_back(num);
    }
    quickSort(vec);
    for(int i=0;i<10;i++)
        cout<<vec[i]<<" ";
}

      

    原文作者:算法
    原文地址: https://www.twblogs.net/a/5bde13682b717720b51b5043
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞