啊啊啊啊,写一下归并排序
。
class mergeSort:
def merge(self, left, right):
m = len(left)
n = len(right)
l = 0
r = 0
res = []
while l < m or r < n:
if l==m:
res.append(right[r])
r += 1
continue
if r==n:
res.append(left[l])
l += 1
continue
if left[l] < right[r]:
res.append(left[l])
l += 1
else:
res.append(right[r])
r += 1
return res
def mergeSort(self, nums):
n = len(nums)
if n==1:
return nums
mid = n // 2
left = self.mergeSort(nums[0:mid])
right = self.mergeSort(nums[mid:])
res = self.merge(left, right)
return res
mergesort = mergeSort()
nums = [0,1,2,2,1,17,6,5,4,3,3,2,1,3,4,56]
res = mergesort.mergeSort(nums)
print(res)
有问题来吐槽。时间复杂度应该是 O ( n l o g ( n ) ) O(n log(n)) O(nlog(n))。