题目
对于一个int数组,请编写一个归并排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
思路
分治法,归并排序。
代码
class MergeSort:
def merge(self, A, first, mid, last):
tmp = []
i = first; j = mid + 1
while i <= mid and j <= last:
if A[i] < A[j]:
tmp.append(A[i])
i += 1
else:
tmp.append(A[j])
j += 1
while i <= mid:
tmp.append(A[i])
i += 1
while j <= last:
tmp.append(A[j])
j += 1
for i in range(len(tmp)):
A[i + first] = tmp[i]
def sort(self, A, first, last):
if first < last:
mid = (first + last) // 2
self.sort(A, first, mid)
self.sort(A, mid + 1, last)
self.merge(A, first, mid, last)
def mergeSort(self, A, n):
# write code here
self.sort(A, 0, n - 1)
return A