桶排序、计数排序、基数排序的时间复杂度都属O(n),称它们为线性排序。
1.桶排序
桶排序,顾名思义,会想到“桶”,核心思想时将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。排完序之后,再把桶里的数据依次取出,组成的数列就是有序的。
2.计数排序
就好比高考时的查分系统,当你点击查询按钮如何快速查出你在省内的排名呢?高考最高分900分,最低分0分,可以分成901个桶,每个桶内都是成绩相同的学生,把这些学生设成一个集合。但你要查询分数的时候,只需要遍历到你分数对应的桶就能快速找到你在省内的成绩。
3.基数排序
基数排序对要排序的数据数有要求的,需要可以分割出独立的“位”来比较,而且位之间有递进的关系,如果a数据的高位比b数据大,那剩下的地位就不用比较了。除此之外,每一位的数据范围不能太大,要可以用线性排序算法来排序,否则,基数排序的时间复杂度就无法做到O(n)了