快排模板

#include<iostream> 
using namespace std;
int arr[5] = {5,4,1,3,6};     //待排序数组 
void quick_sort(int left,int right){ 
    int tmp = arr[left];  //找基准 
    if(left>=right){  //如果左边扫描大于右边扫描就结束 
        return;
    }
    int i = left;    //从左边扫描 
    int j = right;   //从右边扫描 
    while(i<j){
        while(i<j&&arr[j]>=tmp){
            j--;
        }
        arr[i] = arr[j];    //先右边扫描 扫描到符合条件的数就把他给基准 
        while(i<j&&arr[i]<=tmp){
            i++;     
        }
        arr[j] = arr[i];   //然后左边扫描扫描到符合条件的数给刚才的右边的数 也就是交换 
    }
    arr[i] = tmp;     //再把基准给左边交换过的那个数 
    quick_sort(left,i-1);  //左边扫描 
    quick_sort(i+1,right);  //右边扫描 
} 
int main()
{
    quick_sort(0,4);
    for(int i=0;i<5;i++){
        printf("%d ",arr[i]);
    }
    return 0;
}

 

posted @ 2019-03-26 22:39  菜の可怜  阅读(355)  评论(0编辑  收藏  举报