如何使用python实现计数排序与桶排序

  介绍

这篇文章将为大家详细讲解有关如何使用python实现计数排序与桶排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强>计数排序

<李>

找到给定序列的最小值与最大值

<李>

创建一个长度为最大值——最小值+ 1的数组,初始化都为0

<李>

然后遍历原序列,并为数组中索引为当前值-最小值的值+ 1

<李>

此时数组中已经记录好每个值的数量,自然也就是有序的了

例如:

如何使用python实现计数排序与桶排序

<强>计数排序实现

下面为列表的计数排序

def  count_sort (s):   “““才能计数排序“““   #,才能找到最大最小值   min_num 才能=,最小值(s)   max_num 才能=,马克斯(s)   #,才能计数列表   时间=count_list 才能;[0]* (max_num-min_num + 1)   #,才能计数   for 才能小姐:拷贝:   ,,,count_list (i-min_num), +=1   s.clear才能()   #,才能填回   for 才能,印第安纳州小姐:拷贝列举(count_list):   ,,,while 小姐:!=,0:   ,,,,,s.append(印第安纳州+ min_num)   ,,,,,小姐:-=1      if  __name__ ==, & # 39; __main__ # 39;:   a 才能=,(3、6、8、4、2、6、7、3]   count_sort才能(a)   打印才能(a)

计数排序的缺点

当数值中有非整数时,计数数组的索引无法分配

<强>桶排序

<强>桶排序原理:

<李>

桶排序与计数排序类似,但可以解决非整数的排序

<李>

桶排序相当于把计数数组划分为按顺序的几个部分

<李>

每一部分叫做一个桶,它来存放处于该范围内的数

<李>

然后再对每个桶内部进行排序,可以使用其他排序方法如快速排序

<李>

最后整个桶数组就是排列好的数据,再将其返回给原序列

举例:

如何使用python实现计数排序与桶排序

<强>桶排序实现

这里选择桶的数量为序列元素个数+ 1,范围分别等是5分与最大值,和上面那个图一样。

具体问题应该按照具体情况进行桶划分

这里桶内部排序直接调用了排序

def  bucket_sort (s):   “““才能桶排序“““   min_num 才能=,最小值(s)   max_num 才能=,马克斯(s)   #才能,桶的大小   bucket_range 才能=,(max_num-min_num),/, len (s)   #才能,桶数组   count_list 才能=,[[]大敌;for 小姐:拷贝范围(len (s), +, - 1))   #,才能向桶数组填数   for 才能小姐:拷贝:   ,,,count_list [int ((i-min_num)//bucket_range)] .append(我)   s.clear才能()   #,才能回填,这里桶内部排序直接调用了排序   for 才能小姐:拷贝count_list:   ,,,for  j 拷贝排序(我):   ,,,,,s.append (j)      if  __name__ ==, & # 39; __main__ # 39;:   a 才能=,(3.2、6、8、4、2、6、7、3]   bucket_sort才能(a),   打印(a),才能#,[3.2,2,,3,,4,6,6,7,8)

关于“如何使用python实现计数排序与桶排序”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。

如何使用python实现计数排序与桶排序