本文主要是介绍计数排序(简略概括),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
介绍
通过数组,将对应的数存放在新数组对应的下标位置,遇到重复的数就+1.
然后遍历数组将每个数存放到原数组中
实现
找到最大的数和最小的数,最小的数为下标0的位置,最大的数与最小的数的差值为数组大小
代码
// 计数排序
void CountSort(int* a, int n) {int max, min, i,j=0;max = min = a[0];for (i = 1; i < n; i++) {if (a[i] > max)max = a[i];if (a[i] < min)min = a[i];}int* arr = (int*)calloc(max - min + 1, sizeof(int));for (i = 0; i < n; i++)arr[a[i] - min]++;for (i = 0; i < max - min + 1; i++) {while (arr[i]--)a[j++] = min+i;}
}
分析
数组越均衡速度越快
目录
介绍
实现
代码
分析
这篇关于计数排序(简略概括)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!