天天看點

快速排序,冒泡排序,直接選擇排序的算法

  1. #include<iostream> 
  2. using namespace std; 
  3. void Quicksort(int *a,int left,int right); 
  4. void Bubblesort(int *a,int n); 
  5. void Selectsort(int *a,int left ,int right); 
  6. int main() 
  7.     int i,a[10]; 
  8.     cout<<"請輸入十個整數:"; 
  9.     for(i=0;i<10;i++) 
  10.         cin>>a[i]; 
  11.     cout<<"排序前為:"<<endl<<endl; 
  12.     for(i=0;i<10;i++) 
  13.         cout<<a[i]<<" "; 
  14.     cout<<endl<<endl; 
  15.     cout<<"快速排序為:"<<endl<<endl; 
  16.     Quicksort(a,0,9); 
  17.     for(i=0;i<10;i++) 
  18.         cout<<a[i]<<" "; 
  19.     cout<<endl<<endl<<"冒泡排序為:"<<endl<<endl; 
  20.     Bubblesort(a,10); 
  21.     cout<<endl<<"直接選擇排序為:"<<endl<<endl; 
  22.     Selectsort(a,0,9); 
  23.     return 0; 
  24. //快速排序 
  25. void Quicksort(int *a,int left,int right) 
  26.     if(left<right) 
  27.    { 
  28.         int i =left,j=right; 
  29.         double key = a[left]; 
  30.         while(i<j) 
  31.         { 
  32.              while(i<j&&a[j]>=key) j--; 
  33.              a[i]=a[j]; 
  34.              while(i<j&&a[i]<=key) i++; 
  35.              a[j]=a[i]; 
  36.         } 
  37.        a[i]=key; 
  38.        Quicksort(a,left,i-1); 
  39.        Quicksort(a,i+1,right); 
  40.     } 
  41. //冒泡排序 
  42. void Bubblesort(int *a,int n) 
  43.     int i,j; 
  44.     bool flag; 
  45.     for(i=0;i<10;i++) 
  46.     { 
  47.         flag=false; 
  48.         for(j=9;j>=i;j--) 
  49.         { 
  50.             if(a[j-1]>a[j]) 
  51.             { 
  52.                 int temp; 
  53.                 temp=a[j-1]; 
  54.                 a[j-1]=a[j]; 
  55.                 a[j]=temp; 
  56.             } 
  57.             flag=true; 
  58.         } 
  59.         if(flag==false) 
  60.             break; 
  61.     } 
  62.     for(i=0;i<10;i++) 
  63.         cout<<a[i]<<" "; 
  64.     cout<<endl; 
  65. //直接選擇排序 
  66. void Selectsort(int *a,int left ,int right) 
  67.     for(int i=left;i<right;i++) 
  68.     { 
  69.         int k=i; 
  70.         for(int j=i+1;j<=right;j++) 
  71.         { 
  72.             if(a[j]<a[k]) 
  73.                 k=j; 
  74.         } 
  75.         if(k!=i) 
  76.         { 
  77.             int temp=a[i]; 
  78.             a[i]=a[j]; 
  79.             a[j]=temp; 
  80.         } 
  81.     } 
  82.     for(i=0;i<10;i++) 
  83.         cout<<a[i]<<" "; 
  84.     cout<<endl<<endl; 

繼續閱讀