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 }