当前位置:   article > 正文

python排序算法之(计数排序)_python 计数排序慢

python 计数排序慢

计数排序

 

计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

1. 动图演示

 

 

 

2. Python 代码实现

  1. def countingSort(arr, maxValue):
  2.    bucketLen = maxValue+1
  3.    bucket = [0]*bucketLen
  4.    sortedIndex =0
  5.    arrLen = len(arr)
  6.    for i in range(arrLen):
  7.        if not bucket[arr[i]]:
  8.            bucket[arr[i]]=0
  9.        bucket[arr[i]]+=1
  10.    for j in range(bucketLen):
  11.        while bucket[j]>0:
  12.            arr[sortedIndex] = j
  13.            sortedIndex+=1
  14.            bucket[j]-=1
  15.    return arr

 

桶排序

桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点:

  1. 在额外空间充足的情况下,尽量增大桶的数量

  2. 使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中

同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。

1. 什么时候最快

当输入的数据可以均匀的分配到每一个桶中。

 

2. 什么时候最慢

当输入的数据被分配到了同一个桶中。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/794957
推荐阅读
相关标签
  

闽ICP备14008679号