1. 程式人生 > >Python最簡單版本的MergeSort (歸併排序)

Python最簡單版本的MergeSort (歸併排序)

def MergeSort(l, left, right):     if left >= right:         return     mid = left + (right - left) // 2 #注意這裡的寫法     MergeSort(l, left, mid)     MergeSort(l, mid+1, right)          list_temp = list(range(len(l)))  #注意新建一個和原列表相同的長度的列表          #三個指標     pointer1 = left     pointer2 = mid + 1     pointer3 = left

    if (pointer1 < mid) & (pointer2 < right):                  if l[pointer1] < l[pointer2]:             list_temp[pointer3] = l[pointer1]             pointer3 += 1             pointer1 += 1         else:             list_temp[pointer3] = l[pointer2]             pointer3 += 1             pointer2 += 1                  elif (pointer1 == mid) & (pointer2 < right):         list_temp[pointer3] = l[pointer2]         pointer3 += 1         pointer2 += 1          elif (pointer1 < mid) & (pointer2 == right):         list_temp[pointer3] = l[pointer1]         pointer3 += 1         pointer1 += 1              for i in range(left, right + 1):         l[i] = list_temp[i]