当前位置: 首页> 健康> 母婴 > 北京网站的制作设计_合肥建设工程市场价格信息网_镇江网站建设推广_怎么下载需要会员的网站视频

北京网站的制作设计_合肥建设工程市场价格信息网_镇江网站建设推广_怎么下载需要会员的网站视频

时间:2025/7/12 5:42:51来源:https://blog.csdn.net/weixin_44245188/article/details/142940500 浏览次数:0次
北京网站的制作设计_合肥建设工程市场价格信息网_镇江网站建设推广_怎么下载需要会员的网站视频

基数排序(radix sort)的核心思想与计数排序一致,也通过统计个数来实现排序。在此基础上,基数排序利用数字各位之间的递进关系,依次对每一位进行排序,从而得到最终的排序结果。
在这里插入图片描述

def digit(num: int, exp: int) -> int:"""获取元素 num 的第 k 位,其中 exp = 10^(k-1)"""# 传入 exp 而非 k 可以避免在此重复执行昂贵的次方计算return (num // exp) % 10def counting_sort_digit(nums: list[int], exp: int):"""计数排序(根据 nums 第 k 位排序)"""# 十进制的位范围为 0~9 ,因此需要长度为 10 的桶数组counter = [0] * 10n = len(nums)# 统计 0~9 各数字的出现次数for i in range(n):d = digit(nums[i], exp)  # 获取 nums[i] 第 k 位,记为 dcounter[d] += 1  # 统计数字 d 的出现次数# 求前缀和,将“出现个数”转换为“数组索引”for i in range(1, 10):counter[i] += counter[i - 1]# 倒序遍历,根据桶内统计结果,将各元素填入 resres = [0] * nfor i in range(n - 1, -1, -1):d = digit(nums[i], exp)j = counter[d] - 1  # 获取 d 在数组中的索引 jres[j] = nums[i]  # 将当前元素填入索引 jcounter[d] -= 1  # 将 d 的数量减 1# 使用结果覆盖原数组 numsfor i in range(n):nums[i] = res[i]def radix_sort(nums: list[int]):"""基数排序"""# 获取数组的最大元素,用于判断最大位数m = max(nums)# 按照从低位到高位的顺序遍历exp = 1while exp <= m:# 对数组元素的第 k 位执行计数排序# k = 1 -> exp = 1# k = 2 -> exp = 10# 即 exp = 10^(k-1)counting_sort_digit(nums, exp)exp *= 10

在这里插入图片描述

关键字:北京网站的制作设计_合肥建设工程市场价格信息网_镇江网站建设推广_怎么下载需要会员的网站视频

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: