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;}