基数排序
来源:互联网 发布:安卓系统编程设置re 编辑:程序博客网 时间:2024/05/20 16:13
#include<iostream>using namespace std;int main(){ int data[10]={73,22,93,43,55,14,28,65,39,81}; int temp[10][10]={0};int order[10]={0}; //temp[i][j]代表当前尾数,可能是个位,十位...order[i]这个尾数所在的temp位置中的位置 //例如根据各位数字排的时候temp[3][0] temp[3][1] temp[3][2]代表尾数是3的数字有三个 int i,j,k,n,isd; k=0;n=1; printf("排序前\n"); for(i=0;i<10;i++) printf("%d ",data[i]); putchar('\n'); while(n<=10) { for(i=0;i<10;i++) { isd=(data[i]/n)%10; temp[isd][order[isd]]=data[i]; order[isd]++; } printf("重新排列\n"); for(i=0;i<10;i++) { if(order[i]!=0) for(j=0;j<order[i];j++) { data[k]=temp[i][j]; printf("%d k=%d %d %d\n",data[k],k,i,order[i]); k++; } order[i]=0; } n*=10; k=0; } putchar('\n'); printf("排序后\n"); for(i=0;i<10;i++) printf("%d ",data[i]); system("pause"); return 0;}