23-5-10--快排--递归快速排序代码模板
#include <iostream> using namespace std; //从小到大排序 void quicksort1(int a[],int low,int high) { if(low>=high) return; int base=a[low]; int i=low,j=high; while(i<j) { while(a[j]>=base&&i<j) { j--; } while(a[i]<=base &&i<j) { i++; } if(i<j) { int t=a[i]; a[i]=a[j]; a[j]=t; } } a[low]=a[i]; a[i]=base; quicksort1(a,low,i-1); quicksort1(a,i+1,high); } //从大到小排序 void quicksort2(int a[],int low,int high) { if(low>=high) return ; int i=low,j=high,base=a[low]; while(i<j) { while(i<j&&a[j]<=base) { j--; } while(i<j&&a[i]>=base) { i++; } if(i<j) { int t=a[i]; a[i]=a[j]; a[j]=t; } } a[low]=a[i]; a[i]=base; quicksort2(a,low,i-1); quicksort2(a,i+1,high); } int main() { int size=10; int a[size]={6,1,2,7,9,3,4,5,10,8}; int b[size]={6,1,2,7,9,3,4,5,10,8}; quicksort1(a,0,9); for(int i=0;i<size;i++) { cout<<a[i]<<' '; } cout<<endl; quicksort2(b,0,9); for(int i=0;i<size;i++) { cout<<b[i]<<' '; } cout<<endl; return 0; }
结果如下:
