基数排序(Python实现出现的奇怪问题???)
来源:互联网 发布:winzip官网Windows系统 编辑:程序博客网 时间:2024/05/05 17:58
学Python时间不长,试着用Python写个基数排序做练习,出现了奇怪的问题,最后用循环赋值,就没用问题了,纠结.....
还是不知道为啥出现这个问题,明明赋值后打印结果也显示赋值成功了,为啥再次进循环就值不对了
## 基数排序def MaxBit(arr): Len = len(arr) maxVal = arr[0] for i in range(Len): if maxVal < arr[i]: maxVal = arr[i] max_bit = 1 while maxVal/10: max_bit += 1 maxVal /= 10 return max_bit def RadixSort(arr): Length = len(arr) maxBit = MaxBit(arr) ## 获得数组中最大数的位数 #tmpArr = [[] for i in range(10)] tmpArr = [0]*Length exp = 1 for i in range(maxBit): tmpCount = [0]*10 for j in range(Length): tmpCount[arr[j]/exp%10] += 1 # correct for j in range(1, 10): tmpCount[j] += tmpCount[j-1] for j in range(Length): tmpCount[arr[Length-1-j]/exp%10] -= 1 tmpArr[tmpCount[arr[Length-1-j]/exp%10]] = arr[Length-1-j] print '赋值前:',arr arr = tmpArr print '赋值后:',arr exp *= 10>>> a = [21,12,3,41,145,67,87,213]
>>> RadixSort(a)
结果是:
赋值前: [21, 12, 3, 41, 145, 67, 87, 213]
赋值后: [21, 41, 12, 3, 213, 145, 67, 87]
赋值前: [213, 213, 213, 3, 213, 145, 67, 213]
赋值后: [213, 213, 213, 3, 213, 145, 67, 213]
赋值前: [145, 145, 145, 3, 213, 145, 213, 145]
赋值后: [145, 145, 145, 3, 213, 145, 213, 145]
def RadixSort(arr): Length = len(arr) maxBit = MaxBit(arr) ## 获得数组中最大数的位数 #tmpArr = [[] for i in range(10)] tmpArr = [0]*Length exp = 1 for i in range(maxBit): tmpCount = [0]*10 for j in range(Length): tmpCount[arr[j]/exp%10] += 1 # correct for j in range(1, 10): tmpCount[j] += tmpCount[j-1] for j in range(Length): tmpCount[arr[Length-1-j]/exp%10] -= 1 tmpArr[tmpCount[arr[Length-1-j]/exp%10]] = arr[Length-1-j] print '赋值前:',arr for j in range(Length): arr[j] = tmpArr[j] print '赋值后:',arr exp *= 10
>>> a = [21,12,3,41,145,67,87,213]
>>> RadixSort(a)
结果是:
赋值前: [21, 12, 3, 41, 145, 67, 87, 213]
赋值后: [21, 41, 12, 3, 213, 145, 67, 87]
赋值前: [21, 41, 12, 3, 213, 145, 67, 87]
赋值后: [3, 12, 213, 21, 41, 145, 67, 87]
赋值前: [3, 12, 213, 21, 41, 145, 67, 87]
赋值后: [3, 12, 21, 41, 67, 87, 145, 213]
还是没搞明白为什么,可能对Python语言理解不够,不知道问题出在哪 搞这么个算法 搞了好几个小时,哎!!!虽然能出真确结果,但 最后发现还是不知道第一个版本为啥出问题,o(╯□╰)o
- 基数排序(Python实现出现的奇怪问题???)
- rename 出现的奇怪问题
- Python 一些奇怪的实现
- 电脑开机出现奇怪的问题
- 配置struts2出现的奇怪问题
- 配置struts2出现的奇怪问题
- VS2005 调试 出现奇怪的问题
- MPI下执行出现的奇怪问题
- 代码中出现的奇怪问题原因
- mybatis+springmvc测试出现的奇怪问题
- android 调试时 出现的奇怪问题
- python实现基数排序
- Python实现基数排序
- 记一次奇怪的python编码问题
- python数据分析中出现的奇怪的bug
- 奇怪的问题----(1)
- 语音播放和录音中出现的奇怪的问题
- MFC spin控件出现的一些奇怪的问题
- 开发者需要了解的WebKit
- /usr/bin/java -> /etc/alternatives/java
- 【数据结构】B-Tree, B+Tree, B*树介绍
- 分布式模式之Broker模式
- 将字符串转换成整数 atoi
- 基数排序(Python实现出现的奇怪问题???)
- Error:No CFI table found at address 0x00000000
- linux httpd 启动错误问题解决
- “/”应用程序中的服务器错误。当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\
- 启动时错误
- 短信ui--会话编辑界面之彩信附件
- Easy Widgets拖拽框架
- android 人脸识别
- Winform开发框架之通用人员信息管理