python实现基数排序
2024-08-30 14:45:50
# 基数排序有着局限性,只能是整数,
# 排序的时候要先排后面一个条件的(多条件排序)#如本例中,先从个位开始排起
# 多关键字排序
# 从低关键字开始排序
# @File: radix_sort ##############################################
# def get_digit(num, i): # 获取整数第i位数字 #
# return num // (10 ** i) % 10 #
# #
# #
# def int_to_list(num): #
# li = [] #
# while num > 0: #
# li.append(num % 10) #
# num = num // 10 #
# li.reverse() #
# return li #
############################################## def list_to_buckets(li, i):
buckets = [[] for _ in range(10)]
for num in li:
digit = num // (10 ** i) % 10
buckets[digit].append(num)
return buckets def buckets_to_list(buckets):
li = []
for bucket in buckets:
for num in bucket:
li.append(num)
return li
# return [num for bucket in buckets for num in bucket] def radix_sort(li):
max_val = max(li)
i = 0
while 10 ** i <= max_val:
li = buckets_to_list(list_to_buckets(li, i))
i += 1
return li print(radix_sort([5, 3, 9, 8, 1, 0, 99]))
最新文章
- hibernate笔记--基于主键的单(双)向的一对一映射关系
- jQuery-1.9.1源码分析系列(十五) 动画处理——缓动动画核心Tween
- singleton pattern的推荐实现
- Flex air修改外部xml文件 (转)
- 以 Composer 的方式在 PhpStorm 中添加代码审查工具 Code Sniffer
- 重写ViewPager方法,防止滑动广告尾页的时候,Fragment也改变! (如果广告设置为轮播的话,不需要重写ViewPager)
- JAVA 值传递
- Codeforces Round #130 (Div. 2)
- MAC自动备份数据到服务器
- CodeForces Round #278 (Div.2) (待续)
- JQuery学习笔记--01
- TheFifthWeekText
- 12C RMAN 备份参考v1
- MySQL .msi 安装失败改用.zip安装步骤
- 【算法导论】最小生成树之Kruskal法
- CentOS7完成mysql的安装和远程访问
- webdriver.chrome()禁止加载图片
- python学习笔记(二)、字符串操作
- OAuth 2.0 C# 版
- NodeJs使用async让代码按顺序串行执行
热门文章
- alsa声卡切换
- Ajax的简单实现(Json)
- Array types are now written with the brackets around the element type问题的解决方法
- Python中文问题研究
- HDU2255 奔小康赚大钱 【模板】 二分图完美匹配
- read appSettings in configuration file by XElement with xmlns
- HDU 1257:最少拦截系统
- [Silverlight 2.0 控制物体绕圆弧运行(C#初探篇)]
- ajax验证用户名 当用户名框的数据改变时 执行ajax方法
- WAS:修改jsp编译器用JDK5.0