八大排序

Python 八大排序

时间复杂度

空间复杂度

1.插入排序

2.基数排序

import random

#构建随机的整数列表
zx=[]
for i in range(1000):
    zx.append(random.randint(1,1000))

#找出最大的数字,算出是几位数
def big_num(zx):
    max = 0
    for i in zx:
        if max < i:
            max=i
    wei=0
    while max>0:
        max=int(max/10)
        wei+=1
    return wei

#获取指定位数的数字
def get_num(num,n):
    return (int(num / (10 ** (n - 1)))) % 10

def go(zx):
    for pos in range(1, big_num(zx) + 1):
        #初始化桶
        count = [[],[],[],[],[],[],[],[],[],[]]
        #数据中转站
        haha=[]

        #装桶
        for i in range(len(zx) - 1):
            # 求出相应位数的数字
            j = get_num(zx[i], pos)
            count[j].append(zx[i])
        print(count)

        #装中转站
        for i in count:
            for j in i:
                haha.append(j)

        #数据搬运
        zx=haha
    return zx
print(go(zx))
posted @ 2019-09-20 18:27  zx125  阅读(178)  评论(0编辑  收藏  举报