食品 药品 监督 网站 源码 php全球设计师知识更新服务平台
食品 药品 监督 网站 源码 php,全球设计师知识更新服务平台,深圳网站-建设信科网络,今天开始做女神免费网站一、引入
多关键字排序#xff1a;假如现在有一个员工表。要求按照薪资排序#xff0c;薪资相同的员工按照年龄排序。
先按照年龄进行排序#xff0c;再按照薪资进行稳定的排序
按照这种思路我们对[32,13,94,52,17,54,93]排序#xff1a;
先比较十位数的数字大小#…一、引入
多关键字排序假如现在有一个员工表。要求按照薪资排序薪资相同的员工按照年龄排序。
先按照年龄进行排序再按照薪资进行稳定的排序
按照这种思路我们对[32,13,94,52,17,54,93]排序
先比较十位数的数字大小如果十位一样再比较个位数的数字大小。
个位数字的范围为0~9因此可以分成10个桶将每个数字根据个位数字放入对应的桶中再对桶中的数字根据十位数排序。相当于先排个位数再将数字取出来根据十位数字分桶最后再依次取出即排好序。先进先出
二、代码演示
代码演示如下:
def radix_sort(li):max_num max(li) # 最大值为99--2次分桶最大值为10000--5次分桶it 0 # it指迭代多少次 即9的it为099为1999为2while 10 ** it max_num:buckets [[] for _ in range(10)] #创建10个桶for var in li: # 遍历列表中的数字# 例如当前有个数字987当it 0取出7当it 1987//10-98 98%10 8; 当it 2987//100-9 9%10 9digit (var // 10 ** it) % 10 # 代表将此时it指代的那一位数字取出来buckets[digit].append(var) # 在对应的桶中添加元素# 再将元素依次从桶中取出来li.clear()for buc in buckets:li.extend(buc) # 再将元素依次写入liit 1import random
li list(range(1000))
random.shuffle(li)
radix_sort(li)
print(li)
三、时间复杂度
时间复杂度O(kn)空间复杂度O(kn)k表示数字位数
注意点常见的字符串排序例如abcd和ab我们需要自动补零abcd和ac00数字比较大小是首位补零例如123和012
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91525.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!