分治算法-快速排序

 1 #include<iostream>
 2 using namespace std;
 3 
 4 
 5 void print(int a[],int n)
 6 {
 7     for(int i=0;i<n;i++)
 8         cout<<a[i]<<" ";
 9     cout<<endl;
10 }
11 void quick_sort(int a[],int l,int r)
12 {    
13     if(l<r)
14     {
15         int i=l,j=r,x=a[i];
16         while(i<j)
17         {
18             while(i<j && a[j]>x)
19                 j--;
20             if(i<j)
21                 a[i++]=a[j];//j位置处变为空白区
22             while(i<j && a[i]<x)
23                 i++;
24             if(i<j)
25                 a[j--]=a[i];//i位置处变为空白区
26         }
27         a[i]=x;//x的最终位置
28         quick_sort(a,l,i-1);
29         quick_sort(a,i+1,r);
30     }
31 }
32 int main()
33 {
34     int a[10]={5,3,7,2,6,4,13,1,9,8};
35     print(a,10);
36     quick_sort(a,0,9);
37     print(a,10);
38     return 0;
39 }

原文地址:https://www.cnblogs.com/zizaifeihuaqingsimeng/p/6198633.html