热门IT资讯网

C++实现计数排序

发表于:2024-11-28 作者:热门IT资讯网编辑
编辑最后更新 2024年11月28日,void CountSort(int* a, int n){ assert(a); int minValue = a[0]; int maxValue = a
void CountSort(int* a, int n){        assert(a);        int minValue = a[0];        int maxValue = a[0];        for (int i = 0; i < n; ++i)        {                if (minValue > a[i])                {                        minValue = a[i];                }                if (maxValue < a[i])                {                        maxValue = a[i];                }        }        int range = maxValue-minValue+1;        int* tmp = new int[range];        memset(tmp, 0, sizeof(int)*range);        int index = 0;        while (index < n)        {                tmp[a[index]-minValue]++;                ++index;        }        index = 0;        for (int i = 0; i < range; ++i)        {                while (tmp[i]--)                {                        a[index++] = i+minValue;                }        }        delete[] tmp;}


0