快速排序模板
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 const int N=10000; 5 int n,a[N]; 6 void quicksort(int left,int right) 7 { 8 //一共申请三个变量,temp基准数 ,i,j交换前头和后头,相当于两个指针; 9 int i,j,t,temp; 10 if(left>right)return;//因为是递归所以一定要设计出口,不然无限死循环; 11 temp=a[left]; 12 i=left; 13 j=right; 14 while(i!=j)//j--,i++,swap(a[j],a[i]) 需要满足的条件i<j; 15 { 16 while(a[j]>=temp&&i<j) 17 j--; 18 while(a[i]<=temp&&i<j) 19 i++; 20 if(i<j) 21 swap(a[i],a[j]); 22 } 23 a[left]=a[i]; 24 a[i]=temp; 25 quicksort(left,i-1); 26 quicksort(i+1,right); 27 } 28 int main() 29 { 30 cout<<"n="; 31 cin>>n; 32 cout<<"输入数组:"; 33 for(int i=0;i<n;i++) 34 cin>>a[i]; 35 quicksort(0,n-1); 36 for(int i=0;i<n;i++) 37 cout<<a[i]<<" "; 38 return 0; 39 }