利用HOARE_PARTITION重写QUICKSORT

来源:互联网 发布:绿地集团知乎 编辑:程序博客网 时间:2024/05/21 22:41

利用Hoare划分重写快排

#include<iostream>using namespace std;void exchange(int &a,int &b){int temp=a;a=b;b=temp;}int HOARE_PARTITION(int *arry,int p,int r){int x=arry[p];  int i=p-1,j=r+1;while(true){do{j=j-1;}while(arry[j]>x);do{i=i+1;}while(arry[i]<=x);if(i<j){exchange(arry[i],arry[j]);}else{exchange(arry[p],arry[j]);return j;} }}void QUICKSORT(int *arry,int p,int r){if(p<r){int q=HOARE_PARTITION(arry,p,r);QUICKSORT(arry,p,q-1);QUICKSORT(arry,q+1,r);}} void show(int *arry,int i){for(int j=0;j<=i;j++)cout<<arry[j]<<"  ";cout<<endl;}int main(){int arry[12]={-9,10,31,4,5,9,6,1,2,3,8,-9};QUICKSORT(arry,0,11);show(arry,11);return 0;}

0 0
原创粉丝点击