桶排序

import random

def bucket_sort(li,n=100,max_num=10000):
    buckets = [[] for _ in range(n)]
    for x in li:
        i = min(x // (max_num // n), n-1)
        buckets[i].append(x)
        for j in range(len(buckets[i])-1,0,-1):
            if buckets[i][j] < buckets[i][j-1]:
                buckets[i][j], buckets[i][j-1] = buckets[i][j-1],buckets[i][j]
            else:
                break
    li.clear()
    for b in buckets:
        li.extend(b)

def main():
    li = list(range(100))
    random.shuffle(li)
    print(li)
    bucket_sort(li)
    print(li)

if __name__ == '__main__':
    main()

  

原文地址:https://www.cnblogs.com/navysummer/p/15680286.html