【排序】基数排序 C语言实现

 

这里参考《数据结构与算法分析》,p41页【排序】基数排序 C语言实现_第1张图片

void RadixSort(int *a, int length)
{
    int i, max = a[0], base = 1;; 
    for (i = 1; i < length; i++)
    {   
        if (a[i] > max)
        {   
            max = a[i];
        }   
    }   

    int *t = (int *)malloc(sizeof(int) * length);
    while (max / base > 0)
    {   
        int bucket[10] = {0};

        for (i = 0; i < length; i++)
        {   
            bucket[a[i] / base % 10]++;
        }   
        for (i = 1; i < 10; i++)
        {   
            bucket[i] += bucket[i - 1]; 
        }   
        for (i = length - 1; i >= 0; i--)
        {   
            t[bucket[a[i] / base % 10] - 1] = a[i];
            bucket[a[i] / base % 10]--;
        }
        for (i = 0; i < length; i++)
        {   
            a[i] = t[i];
        }

        base = base * 10;
    }
}

你可能感兴趣的:(数据结构,c语言,算法,c++)