#include<iostream> #include<time.h> #include<stdlib.h> using namespace std; #define N 15 void print(int a[],int n) { int i=1; while(i<=N) { cout<<a[i]<<" "; i++; } cout<<endl; } void s_swap(int &a,int &b) { int t=a; a=b; b=t; } int s_less(int &a,int &b) { return a<b?1:0; } int partion_v1(int a[],int l,int r) { int i=l-1; int j=r; int v = a[r]; while(1) { while(s_less(a[++i],v)); while(s_less(v,a[--j])) { if(j==l) { break; } } if(i>=j){ break; } s_swap(a[i],a[j]); } return i; } int partion(int a[],int l,int r) { int x=a[r]; int i=l-1; for(int j=l;j<r;j++) { if(x>=a[j]){ i++; s_swap(a[i],a[j]); } } s_swap(a[i+1],a[r]); return i+1; } void quicksort(int a[],int l,int r) { if(l<r) { int p=partion(a,l,r); quicksort(a,l,p-1); quicksort(a,p+1,r); } } void quicksort_v1(int a[],int l,int r) { if(r<=l){ return; } int p=partion_v1(a,l,r); quicksort(a,l,p-1); quicksort(a,p+1,r); } int main() { int a[N+1]; srand(time(0)); for(int i=1;i<=N;i++) { a[i] = rand()%(100*N); } quicksort_v1(a,1,N); print(a,N); return 0; }
快速排序
最新推荐文章于 2022-05-01 09:00:00 发布