• 基数排序


    #include <stdio.h>
    #include <math.h>
    #include <malloc.h>
    
    typedef int ElementType;
    
    #define DIGIT 31
    #define RADIX_10 10
    
    int GetNumInPos(ElementType Num,int Pos)
    {
        ElementType Temp = pow(10,Pos-1);
        return ((Num/Temp) % 10);
    }
    
    void RadixSort(ElementType *Array,int ArrayLen)
    {
        int i;
        int Position;
        int ArrayEnd;
        int CurrentIndex;
        int RadixArrayEnd;
        
        ElementType *RadixArray[RADIX_10];
        int RadixArraySum[RADIX_10];
        
        for(i = 0;i < RADIX_10;i ++)
        {
            RadixArray[i] = malloc((ArrayLen+1)*sizeof(ElementType));
            RadixArraySum[i] = 0;
        }
        
        for(Position = 1;Position <= DIGIT;Position ++)
        {
            //distribute
            for(i = 0;i < ArrayLen;i ++)
            {
                CurrentIndex = GetNumInPos(Array[i],Position);
                RadixArrayEnd = ++ RadixArraySum[CurrentIndex];
                RadixArray[CurrentIndex][RadixArrayEnd] = Array[i];
            }
            
            //collect
            for(i = 0,ArrayEnd = 0;i < RADIX_10;i ++)
            {
                for(RadixArrayEnd = 1;RadixArrayEnd <= RadixArraySum[i];RadixArrayEnd ++)
                {
                    Array[ArrayEnd++] = RadixArray[i][RadixArrayEnd];
                }
                RadixArraySum[i] = 0;
            }
        }
    }
    
    int main()
    {
        ElementType TestArray[10] = {18,224,3332,4443,55,31,66,79,90,7};
        RadixSort(TestArray,10);
        int i;
        for(i = 0;i < 10;i ++)
        {
            printf("%d ",TestArray[i]);
        }
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    安利一个_Java学习笔记总结
    九涯的第一次
    attrs 资源文件 自定义属性
    EditText
    ArrayList 数组 初始化方法
    HTTP Retrofit 网络传输
    画布Canvas 画笔Paint
    View控件跟随鼠标移动
    ViewPager和Fragment中的View的点击事件冲突
    圆形图片 ImageView
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9427405.html
Copyright © 2020-2023  润新知