快速排序模板

 

 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 }

 

上一篇:使用网云穿「内网穿透」实现外网访问内网瑞友天翼等软件


下一篇:快速排序寻找第K大的数