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]);

        

  • 相关阅读:
    scrum
    control.begininvoke
    ChangeBrowsePosition Method
    常见linux命令(表格分类)
    Python 之优先级排序
    Python 之分辨双胞胎:copy(浅拷贝)与 deepcopy(深拷贝)
    字符编码学习总结
    Python 多继承方式及顺序
    AttributeError: module 'datetime' has no attribute 'now' ------解决方法之一
    Python 模块定义、导入、优化详解
  • 原文地址:https://www.cnblogs.com/jinjiantong/p/2971926.html
Copyright © 2011-2022 走看看