计数排序算法
计数排序算法是一种非比较型排序算法,它的核心思想是:统计每个元素出现的次数,按照次数从小到大排序。它的实现原理是:先统计每个元素出现的次数,把次数作为数组的下标,把元素存入对应的数组中,输出排好序的数组。
应用场景
计数排序算法适用于数据范围不大的排序场景,例如需要对0-100之间的数据进行排序,计数排序算法就可以很好的实现。它的时间复杂度是O(n+k),其中n是数组的长度,k是数据范围的大小,当k比较小时,计数排序算法的效率会比较高。
使用方法
使用计数排序算法的步骤如下:
- 统计每个元素出现的次数,并用一个数组来存储。
- 遍历数组,把每个元素出现的次数作为下标,把元素存入对应的数组中。
- 输出排序后的数组。
// 计数排序算法 int[] countSort(int[] array) { // 1.得到数列的最大值 int max = array[0]; for (int i = 1; i < array.length; i++) { if (array[i] > max) { max = array[i]; } } // 2.根据数列最大值确定统计数组的长度 int[] countArray = new int[max + 1]; // 3.遍历数列,填充统计数组 for (int i = 0; i < array.length; i++) { countArray[array[i]]++; } // 4.遍历统计数组,输出结果 int index = 0; int[] sortedArray = new int[array.length]; for (int i = 0; i < countArray.length; i++) { for (int j = 0; j < countArray[i]; j++) { sortedArray[index++] = i; } } return sortedArray; }