gpt4 book ai didi

python - Python 上的归并排序 : Unusual pattern of result obtained

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:59 26 4
gpt4 key购买 nike

我有一个未排序的数组,包含 10,000 个从 0 到 9,999 的整数。我想对这个未排序的数组应用合并排序,我编写了以下代码-

import sys
def merge_sort(data):
result = []
if len(data) <= 1:
return data
else:
mid = int(len(data)/2)
left = data[:mid]
right = data[mid:]
sorted_left = merge_sort(left)
sorted_right = merge_sort(right)
i = j = k = 0
total_len = len(sorted_left) + len(sorted_right)
for k in range(0, total_len):
if i < len(sorted_left) and j < len(sorted_right):
if sorted_left[i] < sorted_right[j]:
result.append(sorted_left[i])
i = i+1
k = k+1
elif sorted_left[i] > sorted_right[j]:
result.append(sorted_right[j])
j = j+1
k = k+1
elif i < len(sorted_left):
result.append(sorted_left[i])
i = i+1
k = k+1
elif j < len(sorted_right):
result.append(sorted_right[j])
j = j+1
k = k+1
else:
sys.exit("There is some issue with the code")
return result
print merge_sort(data)

因此,当我对这些数据进行排序时,除了一些条目之外,我得到了正确的排序顺序。例如-最后我得到了这样的结果-

[...'9989'、'999'、'9990'、'9991'、'9992'、'9993'、'9994'、'9995'、'9996'、'9997'、'9998' ,'9999']

正如您所观察到的,数字“999”位于错误的位置。不仅在这个片段中,它也发生在其他地方,例如“995”出现在“9949”和“9950”之间。那么有人知道为什么会发生这种情况吗?P.S.-我运行此代码进行调试,它运行时没有错误,产生这些结果

最佳答案

您正在订购字符串:'9989' < '999' < '9990' 。如果您想对整数进行排序,则必须将输入列表转换为整数。

关于python - Python 上的归并排序 : Unusual pattern of result obtained,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com