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

你需要知道的九大排序算法【Python实现】之基数排序

时间:2016-12-10 13:46:24      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:实现   基数排序   python   and   数值   bsp   排序   复杂   style   

八、基数排序

  1. 基本思想:基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。

  2. 算法实现:

    #coding: utf-8 
    #!/usr/bin/python   
    import random
    import math
    
    #随机生成0~100之间的数值
    def get_andomNumber(num):  
        lists=[]  
        i=0  
        while i<num:  
            lists.append(random.randint(0,100))  
            i+=1
        return lists
    
    
    # 头部需导入import math
    def radix_sort(lists, radix=10):
        k = int(math.ceil(math.log(max(lists), radix)))
        bucket = [[] for i in range(radix)]
        for i in range(1, k+1):
            for j in lists:
                bucket[int(j/(radix**(i-1)) % (radix**i))].append(j)
            del lists[:]
            for z in bucket:
                lists += z
                del z[:]
        return lists
    a = get_andomNumber(10)
    print("排序之前:%s" %a)
    
    b = radix_sort(a)
    
    print("排序之后:%s" %b)

     

你需要知道的九大排序算法【Python实现】之基数排序

标签:实现   基数排序   python   and   数值   bsp   排序   复杂   style   

原文地址:http://www.cnblogs.com/w2218/p/6155330.html

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