为了账号安全,请及时绑定邮箱和手机立即绑定

计数排序 - 不明白为什么我的算法不起作用

计数排序 - 不明白为什么我的算法不起作用

临摹微笑 2021-07-30 13:34:35
在过去的 3 个小时里,我正在努力构建计数排序算法。我理解这个概念,我可以在纸上使用计数排序算法对数组进行排序,没有问题。问题是当试图将纸上的步骤翻译成代码时,我的算法失败了。程序因错误消息“索引超出范围”而中断。为了理解错误,我使用了打印函数来查看每次迭代的结果。结果不正确。算法有什么问题?def count_sort(array):    minArr = min(array)    maxArr = max(array)    sumArray = [0 for _ in range(minArr, maxArr+1)]    for i in range(len(array)):        sumArray[array[i] - 1] += 1    print(sumArray)    sumCount = []    sumCount.append(sumArray[0])    for i in range(1, len(sumArray)):        sumCount.append(sumArray[i] + sumCount[i-1])    print(sumCount)    sortedArray = [0 for _ in range(len(array))]    for i in range(len(array)):        sortedArray[sumCount[array[i]] - 1] = array[i]        sumCount[array[i]] -= 1    print(sortedArray)
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

你需要更换


sortedArray[sumCount[array[i]] - 1] = array[i]

sumCount[array[i]] -= 1

经过


sortedArray[sumCount[array[i]-1]-1] = array[i]

sumCount[array[i]-1]-= 1


查看完整回答
反对 回复 2021-08-03
  • 2 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号