码迷,mamicode.com
首页 > 编程语言 > 详细

06 基数排序

时间:2017-09-08 23:03:22      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:删除   rand   pen   排序   基数排序   ret   问题   mat   ceil   

import math
def radixSort(list, radix = 10):
    ‘‘‘
    math.ceil 为x取整,结果是不小于x的最小整数.
    math.log(x, a)	返回 log 以 a 为底 x 的对数,若不给定 a 则底默认为 e
    ‘‘‘
    k = int(math.ceil(math.log(max(list), radix)))
    bucket = [[]for i in range(radix)]
    for i in range(1, k+1):
        for j in list:
            # math.floor(x)返回 ≦ x的最大整数,例:math.floor(3.4) = 3
            bucket[math.floor(j / (radix **(i-1)) % (radix))].append(j)
            #print(bucket)
        # 从列表中删除所有元素
        del list[:]
        for z in bucket:
            print (z)
            list +=z
            print (list)
            del z[:]
    return list


list = [434,24,657,976,2354,9,67,8099,4353,3453]
print(radixSort(list))


‘‘‘
import random
import math
def radixSort():
    #A=[random.randint(1,9999) for i in range(10)]
    A =[5042,7431,3620,6306,858,8215,6438,2187,9830,2611]
    print(A)
    for k in range(4):  #4轮排序
        s=[[] for i in range(10)]
        for i in A:
            # 10**k 巧妙的把k=0问题解决了
            s[math.floor(i/(10**k)%10)].append(i)
        # s = [[A,B,C],[]], b = [A,B,C],a=A.
        A=[a for b in s for a in b]
    return A

print(radixSort())
‘‘‘

  

06 基数排序

标签:删除   rand   pen   排序   基数排序   ret   问题   mat   ceil   

原文地址:http://www.cnblogs.com/think-and-do/p/7496585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!