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]