12_資料結構與演算法_合併排序_Python實現
阿新 • • 發佈:2018-12-18
#Created By: Chen Da #定義一個合併方法,等價於Python內建的sorted def merge_sorted_list(sorted_a,sorted_b): length_a,length_b = len(sorted_a),len(sorted_b) a = b = 0 #定義指標 new_list = list() while a < length_a and b < length_b: if sorted_a[a] < sorted_b[b]: new_list.append(sorted_a[a]) a += 1 else: new_list.append(sorted_b[b]) b += 1 while a < length_a: new_list.append(sorted_a[a]) a += 1 while b < length_b: new_list.append(sorted_b[b]) b += 1 return new_list #合併排序 def merge_sort(seq): if len(seq) <= 1: return seq else: mid = int(len(seq) / 2) left_sorted_list = merge_sort(seq[:mid]) #遞迴等分原列表 right_sorted_list = merge_sort(seq[mid:]) new_sorted_list = merge_sorted_list(left_sorted_list,right_sorted_list) return new_sorted_list def test_merge_sort(): lyst = list(range(20)) import random random.shuffle(lyst) assert merge_sort(lyst) == list(range(20)) if __name__ == "__main__": test_merge_sort()