我们常用的排序算法,有冒泡算法、快速算法等,它们都是基于元素之间的比较来进行排序,有一种特殊的算法不是基于元素比较,而是利用数组下标来确定元素在数组的位置,这种算法就是“计数排序”。
先来说一下实现的原理,假设有20个随机整数的数组array,他们值分别是:9,3,5,4,9,1,2,7,8,1,3,6,5,3,4,0,10,9,7,9.有没有发现这些整数的大小都是在[0,10]区间内,这时我们可以定义一个长度为11的数组countArray,每个元素的初始值都为0.当我遍历这20个随机整数时,每个值在countArray的下标位置对号入座。
注意:不是赋值,而是每有一个值,就在对应位置+1,譬如遍历array的第一位元素9,就会在array[9]位置+1,遍历array的第二位元素3时,就在countArray[3]位置+1,如此类推。
最终遍历整个array数组后,countArray数组变成以下情况:
value: | 1 | 2 | 1 | 3 | 2 | 2 | 1 | 2 | 1 | 4 | 1 |