十大经典排序算法(动图演示)( 五 )

< buckets.length; i++) {33insertionSort(buckets[i]);// 对每个桶进行排序 , 这里使用了插入排序34for(varj = 0; j < buckets[i].length; j++) {35arr.push(buckets[i][j]);36}37}3839returnarr;40 }10.4 算法分析基数排序基于分别排序 , 分别收集 , 所以是稳定的 。 但基数排序的性能比桶排序要略差 , 每一次关键字的桶分配都需要O(n)的时间复杂度 , 而且分配之后得到新的关键字序列又需要O(n)的时间复杂度 。 假如待排数据可以分为d个关键字 , 则基数排序的时间复杂度将是O(d*2n), 当然d要远远小于n , 因此基本上还是线性级别的 。 基数排序的空间复杂度为O(n+k) , 其中k为桶的数量 。 一般来说n>>k , 因此额外空间需要大概n个左右 。


推荐阅读