#! coding=utf-8 def merge_sort(arr): lenght = len(arr) if lenght <= 1: return arr num = int(lenght / 2 ) left = merge_sort(arr[num:]) right = merge_sort(arr[:num]) return merge(left,right) def merge(left,right): r,l = 0,0 result = [] while l <len(left) and r < len(right): if left[l] <= right[r]: result.append(left[l]) l += 1 else: result.append(right[r]) r += 1 result += list(left[l:]) result += list(right[r:]) return result if __name__ == '__main__': # 如果多条list进行归并排序,那么在外部将其合并为一个无序list li = [6,5,9,23,24,6,1,4,154,26,9,1,414,21,52,185,31,13] print(merge_sort(li)) # [1, 1, 4, 5, 6, 6, 9, 9, 13, 21, 23, 24, 26, 31, 52, 154, 185, 414]