zoukankan      html  css  js  c++  java
  • [算法] 基数排序

    参考: http://baike.baidu.com/view/1170573.htm

    跟桶排序差不多,理解起来还行写起来难度很大(自己不会写),才发现桶排序也可以用2维数组来解决,

    下面代码哪位大神写的,写的很好

    int data[10]={73,22,93,43,55,14,28,65,39,81};
            int temp[10][10]={0};//2维数组准备存放位数一样的数
            int order[10]={0};
            int i,j,k,n,lsd;
            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++){
                    lsd=((data[i]/n)%10);              //n 第一次的时候 lsd是各位数,n 第二次的时候lsd是十位数,外层循环走两遍
                    temp[lsd][order[lsd]]=data[i]; //当lsd相同的时候,通过order[lsd]++来存放不同的地方
                    order[lsd]++;                          
                }
                printf("\n重新排列: ");
                for (i=0;i<10;i++){
                    if(order[i]!=0)
                        for (j=0;j<order[i];j++){    //2维数组循环
                            data[k]=temp[i][j];
                            printf("%d ",data[k]);
                            k++;
                        }
                    order[i]=0;
                }
                n*=10;
                k=0;
            }
            putchar('\n');
            printf("\n排序后: ");
            for (i=0;i<10;i++) printf("%d ",data[i]);

        

  • 相关阅读:
    Synchronized锁升级
    锁削除和锁粗化
    自旋锁
    Synchronized原理
    浅谈AQS原理
    JSON使用
    JSON语法
    Decode Ways
    String to Integer(atoi)
    Leetcode:Reverse Words in a String
  • 原文地址:https://www.cnblogs.com/jinjiantong/p/2971926.html
Copyright © 2011-2022 走看看