C++冒泡,插入,基數排序

  1. #include<iostream>  
  2. using namespace std;  
  3. //得到最大數的位數  
  4. int getmaxbit(int date[],int la ){  
  5.   
  6. int d=1;  
  7. int p=10;  
  8. for(int i=0;i<la;i++){  
  9.     while(date[i]>=p){  
  10. p=p*10;  
  11.     ++d;  
  12.     }  
  13. }  
  14. return d;  
  15. }  
  16. //基數排序  
  17. void radixsort(int date[],int la){  
  18.     int temp[10][10]={0};  
  19.     int order[10]={0};  
  20.     int i,j,k,n,isd,s;  
  21.     k=0;  
  22.     n=1;  
  23.     s=1;  
  24.     int max=getmaxbit(date,la);  
  25.     for(int x=1;x<max;x++){  
  26.     s=s*10;  
  27.     }  
  28.     while(n<=s){  
  29.         for(i=0;i<la;i++){  
  30.             isd=((date[i]/n)%10);  
  31.             temp[isd][order[isd]]=date[i];  
  32.             order[isd]++;  
  33.         }  
  34.         for(i=0;i<10;i++){  
  35.           
  36.             if(order[i]!=0)  
  37.                 for(j=0;j<order[i];j++){  
  38.                     date[k]=temp[i][j];  
  39.                     k++;  
  40.                   
  41.                     }  
  42.                 order[i]=0;  
  43.   
  44.         }  
  45.         n=n*10;  
  46.         k=0;  
  47.   
  48.     }  
  49.   
  50. }  
  51. //交換數字  
  52. void SWAP(int& a, int& b){  
  53. int s=a;  
  54. a=b;  
  55. b=s;}  
  56. //冒泡排序  
  57. void bubblesort(int a[],int la){  
  58. int i,j;  
  59. bool flag=true;  
  60. for(i=0;i<la && flag;i++){  
  61. flag=false;  
  62. for(j=(la-1);j>=i;j--){  
  63. if(a[j]>a[j+1])  
  64. {  
  65. SWAP(a[j],a[j+1]);  
  66. flag=true;  
  67. }  
  68. }  
  69. }  
  70. }  
  71.   
  72. //插入排序  
  73. void insertsort(int a[],int la ){  
  74. int i,temp,index;  
  75.   
  76. for (i=1;i<la;i++){  
  77.             temp=a[i];  
  78.             index=i-1;  
  79.             while (index>=0&&temp<a[index]){  
  80.                 a[index+1]=a[index];  
  81.                 index--;  
  82.             }  
  83.             a[index+1]=temp;  
  84.         }  
  85.   
  86.   
  87. }  
  88.   
  89.   
  90.   
  91. int main(){  
  92. int in[10];  
  93. int laaa;  
  94. int sss=0;  
  95. int d;  
  96.     cout<<"Input"<<endl;  
  97. cin>>in[0];  
  98.     cin>>in[1];  
  99. cin>>in[2];  
  100. for( d=2;d<10;d++){  
  101. while(in[d]!=0){  
  102. cin>>in[++d];  
  103. }  
  104. break;  
  105. }  
  106. d=d-1;  
  107.   
  108. cout<<"1-冒泡排序,2-插入排序,3-基數排序"<<endl;  
  109.   
  110. cin>>laaa;  
  111. if(laaa==1){  
  112. cout<<"Output"<<endl;  
  113.     cout<<"冒泡排序"<<endl;  
  114.     bubblesort(in,d);  
  115.   
  116.     for(int i=0;i<=d;i++){  
  117.         if(i!=d)  
  118.        cout<<in[i]<<",";  
  119.         else  
  120.         cout<<in[i]<<endl;  
  121. }}  
  122. else if(laaa==2){  
  123. cout<<"Output"<<endl;  
  124.     cout<<"插入排序"<<endl;  
  125.     d++;  
  126. sss=d-1;  
  127.     insertsort(in,d);  
  128.   
  129.     for(int i=0;i<d;i++){  
  130.         if(i!=sss)  
  131.        cout<<in[i]<<",";  
  132.         else  
  133.         cout<<in[i]<<endl;  
  134. }  
  135. }  
  136. else if(laaa==3){  
  137.     cout<<"Output"<<endl;  
  138.     cout<<"基數排序"<<endl;  
  139.       
  140.     d++;  
  141. sss=d-1;  
  142.     radixsort(in,d);  
  143.     for(int i=0;i<d;i++){  
  144.         if(i!=sss)  
  145.        cout<<in[i]<<",";  
  146.         else  
  147.         cout<<in[i]<<endl;  
  148. }  
  149. }  
  150. else  
  151. cout<<"輸入有誤"<<endl;  
  152. cout<<"End"<<endl;  
  153. return 0;  
  154.   
  155. }  

  1. #include<iostream>  
  2. using namespace std;  
  3. //得到最大數的位數  
  4. int getmaxbit(int date[],int la ){  
  5.   
  6. int d=1;  
  7. int p=10;  
  8. for(int i=0;i<la;i++){  
  9.     while(date[i]>=p){  
  10. p=p*10;  
  11.     ++d;  
  12.     }  
  13. }  
  14. return d;  
  15. }  
  16. //基數排序  
  17. void radixsort(int date[],int la){  
  18.     int temp[10][10]={0};  
  19.     int order[10]={0};  
  20.     int i,j,k,n,isd,s;  
  21.     k=0;  
  22.     n=1;  
  23.     s=1;  
  24.     int max=getmaxbit(date,la);  
  25.     for(int x=1;x<max;x++){  
  26.     s=s*10;  
  27.     }  
  28.     while(n<=s){  
  29.         for(i=0;i<la;i++){  
  30.             isd=((date[i]/n)%10);  
  31.             temp[isd][order[isd]]=date[i];  
  32.             order[isd]++;  
  33.         }  
  34.         for(i=0;i<10;i++){  
  35.           
  36.             if(order[i]!=0)  
  37.                 for(j=0;j<order[i];j++){  
  38.                     date[k]=temp[i][j];  
  39.                     k++;  
  40.                   
  41.                     }  
  42.                 order[i]=0;  
  43.   
  44.         }  
  45.         n=n*10;  
  46.         k=0;  
  47.   
  48.     }  
  49.   
  50. }  
  51. //交換數字  
  52. void SWAP(int& a, int& b){  
  53. int s=a;  
  54. a=b;  
  55. b=s;}  
  56. //冒泡排序  
  57. void bubblesort(int a[],int la){  
  58. int i,j;  
  59. bool flag=true;  
  60. for(i=0;i<la && flag;i++){  
  61. flag=false;  
  62. for(j=(la-1);j>=i;j--){  
  63. if(a[j]>a[j+1])  
  64. {  
  65. SWAP(a[j],a[j+1]);  
  66. flag=true;  
  67. }  
  68. }  
  69. }  
  70. }  
  71.   
  72. //插入排序  
  73. void insertsort(int a[],int la ){  
  74. int i,temp,index;  
  75.   
  76. for (i=1;i<la;i++){  
  77.             temp=a[i];  
  78.             index=i-1;  
  79.             while (index>=0&&temp<a[index]){  
  80.                 a[index+1]=a[index];  
  81.                 index--;  
  82.             }  
  83.             a[index+1]=temp;  
  84.         }  
  85.   
  86.   
  87. }  
  88.   
  89.   
  90.   
  91. int main(){  
  92. int in[10];  
  93. int laaa;  
  94. int sss=0;  
  95. int d;  
  96.     cout<<"Input"<<endl;  
  97. cin>>in[0];  
  98.     cin>>in[1];  
  99. cin>>in[2];  
  100. for( d=2;d<10;d++){  
  101. while(in[d]!=0){  
  102. cin>>in[++d];  
  103. }  
  104. break;  
  105. }  
  106. d=d-1;  
  107.   
  108. cout<<"1-冒泡排序,2-插入排序,3-基數排序"<<endl;  
  109.   
  110. cin>>laaa;  
  111. if(laaa==1){  
  112. cout<<"Output"<<endl;  
  113.     cout<<"冒泡排序"<<endl;  
  114.     bubblesort(in,d);  
  115.   
  116.     for(int i=0;i<=d;i++){  
  117.         if(i!=d)  
  118.        cout<<in[i]<<",";  
  119.         else  
  120.         cout<<in[i]<<endl;  
  121. }}  
  122. else if(laaa==2){  
  123. cout<<"Output"<<endl;  
  124.     cout<<"插入排序"<<endl;  
  125.     d++;  
  126. sss=d-1;  
  127.     insertsort(in,d);  
  128.   
  129.     for(int i=0;i<d;i++){  
  130.         if(i!=sss)  
  131.        cout<<in[i]<<",";  
  132.         else  
  133.         cout<<in[i]<<endl;  
  134. }  
  135. }  
  136. else if(laaa==3){  
  137.     cout<<"Output"<<endl;  
  138.     cout<<"基數排序"<<endl;  
  139.       
  140.     d++;  
  141. sss=d-1;  
  142.     radixsort(in,d);  
  143.     for(int i=0;i<d;i++){  
  144.         if(i!=sss)  
  145.        cout<<in[i]<<",";  
  146.         else  
  147.         cout<<in[i]<<endl;  
  148. }  
  149. }  
  150. else  
  151. cout<<"輸入有誤"<<endl;  
  152. cout<<"End"<<endl;  
  153. return 0;  
  154.   
  155. }  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章