我是靠谱客的博主 称心哑铃,最近开发中收集的这篇文章主要介绍算法导论程序17-桶排序(Python),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

桶排序:

假设输入数据服从均匀分布,平均情况下它的时间代价为O(n)。

桶排序假设输入是由一个随机过程产生,该过程将元素均匀、独立地分布在[0, 1)区间上。

桶排序将[0, 1)区间划分为n个相同大小的子区间,或称为桶(下面的程序中为列表B)。然后,将n个输入数分别放到各个桶中。因为输入数据是均匀独立地分布在[0,  1)区间上,所以一般不会出现很多数落在同一个桶的情况。


为了得到输出结果,我们先对每个桶中的数进行排序,然后遍历每个桶,按照次序把各个桶中的元素列出来即可。


import math
def bucket_sort(A):
    n = len(A)
    B = [[] for i in range(n)]
    for i in range(0,n):
        B[math.floor(n*A[i])].append(A[i])
    for i in range(0,n):
        insertion_sort(B[i])
    del A[:]
    for each in B:
        A.extend(each)

def insertion_sort(A):   
    for j in range(1,len(A)):  
        key = A[j]  
        #Insert A[j] into the sorted sequence A[0..j-1].  
        i = j-1  
        while i>=0 and A[i]>key:  
            A[i+1] = A[i]  
            i = i-1  
        A[i+1] = key  
    
    

运行结果:

>>> A=[0.78,0.17,0.39,0.26,0.72,0.94,0.21,0.12,0.23,0.68]
>>> bucket_sort(A)
>>> A
[0.12, 0.17, 0.21, 0.23, 0.26, 0.39, 0.68, 0.72, 0.78, 0.94]


最后

以上就是称心哑铃为你收集整理的算法导论程序17-桶排序(Python)的全部内容,希望文章能够帮你解决算法导论程序17-桶排序(Python)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部