问题遇到的现象和发生背景
python实现归并排序时 ,单独调用merge可以输出正确,但是sort、merge一起调用输出结果
[0, 0, 0, 0, 0, 0, 0, 0]
自学数据结构到归并排序,不知道哪里有错误
用代码块功能插入代码,请勿粘贴截图
import sys
sys.setrecursionlimit(100000) #例如这里设置为十万
def sort(arr,low,high):
if low < high :
mid = int((low+high)/2)
sort(arr,low,mid)
sort(arr,mid+1,high)
merge(arr,low,mid,high)
return arr
def merge(arr,low,mid,high):
temp1 = [0]*len(arr)
x = low
y = mid + 1
i = 0
while x<mid and y<high:
if arr[x] <= arr[y]:
'''print(x)'''
temp1[i] = arr[x]
i += 1
x += 1
else:
''' print(y)'''
temp1[i] = arr[y]
i += 1
y += 1
while y<=high:
temp1[i] = arr[y]
i += 1
y += 1
while x<=mid:
temp1[i] = arr[x]
i += 1
x += 1
a = 0
b = 0
while a < len(arr):
arr[a] = temp1[b]
a += 1
b += 1
return arr
arr = [7,1,4,9,3,5,2,8]
low = 0
high = len(arr)-1
mid =int((low+high)/2)
print (sort(arr,low,high))
运行结果及报错内容
运行结果:[0, 0, 0, 0, 0, 0, 0, 0]
我的解答思路和尝试过的方法
def merge(arr,low,mid,high):
temp1 = [0]*len(arr)
x = low
y = mid + 1
i = 0
while x<mid and y<high:
if arr[x] <= arr[y]:
'''print(x)'''
temp1[i] = arr[x]
i += 1
x += 1
else:
''' print(y)'''
temp1[i] = arr[y]
i += 1
y += 1
while y<=high:
temp1[i] = arr[y]
i += 1
y += 1
while x<=mid:
temp1[i] = arr[x]
i += 1
x += 1
a = 0
b = 0
while a < len(arr):
arr[a] = temp1[b]
a += 1
b += 1
return arr
arr = [1,4,7,9,2,3,5,8]
low = 0
high = len(arr)-1
mid =int((low+high)/2)
print (merge(arr,low,mid,high))
运行结果及报错内容
运行结果:[1, 2, 3, 4, 5, 8, 7, 9]