python实现归并排序
1.python特色写法,通过数组剪切实现
// An highlighted block
def mergeSort(arr):
if(len(arr)<2):
return arr
middle = int(len(arr)/2)
left, right = arr[0:middle], arr[middle:]
help = merge(mergeSort(left), mergeSort(right))
return help
def merge(left, right):
result = []
while left and right:
if left[0] <= right[0]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
while left:
result.append(left.pop(0))
while right:
result.append(right.pop(0))
return result
nums = [5,4,3,2,1]
print(mergeSort(nums))
2.普通写法:
# 这是一个示例 Python 脚本。
# 按 Shift+F10 执行或将其替换为您的代码。
# 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。
import array
def mergeSort(arr, left, right):
if left == right:
return
middle = int((left+right)/2)
mergeSort(arr, left, middle)
mergeSort(arr, middle+1, right)
merge(arr, left, middle, right)
def merge(arr, left, middle, right):
i, j = left, middle+1
k = 0
temp = [None]*(right-left+1)
while i <= middle and j <= right:
if arr[i] <= arr[j]:
temp[k] = arr[i]
i += 1
else:
temp[k] = arr[j]
j += 1
k += 1
while i <= middle:
temp[k] = arr[i]
k += 1
i += 1
while j <= right:
temp[k] = arr[j]
k += 1
j += 1
i = 0
while i < right-left+1:
arr[left+i] = temp[i]
i += 1
运行截图