更新时间:2023-04-16 00:18
鸽巢排序(Pigeonhole sort),也被称作基数分类,是一种时间复杂度为O(n)(大O符号)且在不可避免遍历每一个元素并且排序的情况下效率最好的一种排序算法。但它只有在差值(或者可被映射在差值)很小的范围内的数值排序的情况下实用。
最坏时间复杂度: O(N+n)
最好时间复杂度:O(N+n)
平均时间复杂度: O(N+n)
最坏空间复杂度:O(N*n)
1. 给定一个待排序数组,创建一个备用数组(鸽巢),并初始化元素为0,备用数组的索引即是待排序数组的值。
2.遍历待排序数组,备用数组(鸽巢)存放索引值得个数。
3.遍历备用数组(鸽巢),将排序值放回原数组得到排序后的数组的值。
算法伪代码(类似Python代码格式)
C源码