首页 > 代码库 > QuickSort 模板

QuickSort 模板

 1 #include<stdio.h>
 2 int num[100]; 
 3 
 4 void quicksort(int left,int right)
 5 {
 6     int i,j,t,temp;
 7     if(left>right) return;
 8     
 9     temp=num[left]; // temp用来存放基准值 
10     i=left;
11     j=right;
12     while(i!=j)
13     {
14         while(num[j]>=temp&&i<j)
15             j--;  // 哨兵j从右往左找一个比基准数小的数 
16         while(num[i]<=temp&&i<j)
17             i++;  //  哨兵i从左往右找一个比基准数大的数 
18             
19         // 交换他们 
20         if(i<j)
21         {
22             t=num[i];
23             num[i]=num[j];
24             num[j]=t;
25         }    
26     }
27     // 将基准数与i,j哨兵碰头的数交换 
28     num[left]=num[i];
29     num[i]=temp;
30     // 将基准数左边和右边的数列再进行排序 
31     quicksort(left,i-1);
32     quicksort(i+1,right);
33     return ;
34 }
35 int main(void)
36 {
37      int i,j,n;
38      scanf("%d",&n);
39      for(i=1;i<=n;i++)
40          scanf("%d",&num[i]);
41      
42      quicksort(1,n);
43      
44      for(i=1;i<=n;i++)
45          printf("%d ",num[i]);
46          
47      return 0;    
48 }

 

QuickSort 模板