快速排序

来源:互联网 发布:淘宝香水嗅觉系真假 编辑:程序博客网 时间:2024/06/06 00:27
  1. #include<iostream>  
  2. #define MAXN 10  
  3.   
  4. int hoare_partition(int arr[],int p,int q){  
  5.     int i,j,x,t;  
  6.     x=arr[p];  
  7.     i=p;  
  8.     j=q;  
  9.     while(1){  
  10.         for(;i<q && arr[i] < x;i++);  
  11.         for(;j>p && arr[j]>=x;j--);  
  12.         if(i<j){  
  13.             t = arr[i];  
  14.             arr[i] = arr[j];  
  15.             arr[j] = t;  
  16.         }else{  
  17.             return j;  
  18.     }  
  19.     }  
  20. }  
  21.   
  22. void hoare_qsort(int arr[],int p,int q){  
  23.     if(p>=q)  
  24.         return;  
  25.     int pivot =  hoare_partition(arr,p,q);  
  26.     hoare_qsort(arr,p,pivot);  
  27.     hoare_qsort(arr,pivot+1,q);  
  28. }  
  29.   
  30. int partition(int arr[],int p,int q){  
  31.     int i,j,x,t;  
  32.     x = arr[q];  
  33.     i = p-1;  
  34.     for(j=p;j<=q;j++){  
  35.         if(arr[j]<x){  
  36.             t = arr[++i];  
  37.             arr[i] = arr[j];  
  38.             arr[j] = t;  
  39.         }  
  40.     }  
  41.     t = arr[i+1];  
  42.     arr[i+1] = arr[q];  
  43.     arr[q] = t;  
  44.     return i+1;  
  45. }  
  46.   
  47. void quick_sort(int arr[],int p, int q){  
  48.     if(p>=q)  
  49.         return;  
  50.     int pivot = partition(arr,p,q);  
  51.     quick_sort(arr,p,pivot-1);  
  52.     quick_sort(arr,pivot,q);  
  53. }  
  54.   
  55.   
  56. int main(){  
  57.     int arr[MAXN] = {6,9,11,5,1,2,4,10,8,3};  
  58.     printf("Classical quick sort:");  
  59.     quick_sort(arr,0,MAXN-1);  
  60.     for(int i=0;i<MAXN;i++)  
  61.         printf("%d ",arr[i]);  
  62.     printf("\nEarliest quick sort:");  
  63.     hoare_qsort(arr,0,MAXN-1);  
  64.     for(int i=0;i<MAXN;i++)  
  65.         printf("%d ",arr[i]);  
  66. }
0 0
原创粉丝点击