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. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会帮你完成这个任务。首先,你需要使用C++读取data.txt文件中的10033个整数并存储在一个数组中。然后,你可以按照以下步骤使用不同的排序算法进行排序,并将结果输出到对应的txt文件中。 1. 冒泡排序(Bubble Sort): - 实现冒泡排序算法,从大到小排序。 - 将排序结果写入名为"冒泡排序.txt"的txt文件。 2. 插入排序(Insertion Sort): - 实现插入排序算法,从小到大排序。 - 将排序结果写入名为"插入排序.txt"的txt文件。 3. 选择排序(Selection Sort): - 实现选择排序算法,从大到小排序。 - 将排序结果写入名为"选择排序.txt"的txt文件。 4. 希尔排序(Shell Sort): - 实现希尔排序算法,从小到大排序。 - 将排序结果写入名为"希尔排序.txt"的txt文件。 5. 归并排序(Merge Sort): - 实现归并排序算法,从大到小排序。 - 将排序结果写入名为"归并排序.txt"的txt文件。 6. 快速排序(Quick Sort): - 实现快速排序算法,从小到大排序。 - 将排序结果写入名为"快速排序.txt"的txt文件。 7. 堆排序(Heap Sort): - 实现堆排序算法,从大到小排序。 - 将排序结果写入名为"堆排序.txt"的txt文件。 8. 基数排序(Radix Sort): - 实现基数排序算法,从小到大排序。 - 将排序结果写入名为"基数排序.txt"的txt文件。 请提供data.txt文件,然后我将为您提供相应的C++代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值