Python 排序算法之歸併排序

""" 歸併排序 1. 實現合併兩個有序數組 2. 根據中間一個元素將數組一分爲二,分別調用自身 3. 將兩部分排好序的數組合並 """ # c = [*a, *b] # print(sorted(c)) # 合併兩個有序數組 def merge_sorted_list(a, b): length_a, length_b = len(a), len(b) i = j = 0 res = [] while i < length_a and j < length_b: if a[i] < b[j]: res.append(a[i]) i += 1 else: res.append(b[j]) j += 1 if i < length_a: res.extend(a[i:]) else: res.extend(b[j:]) return res def test_merge_sorted_list(): a = [1, 2, 5] b = [0, 3, 4, 8] c = merge_sorted_list(a, b) print(c) # test_merge_sorted_list() # 分治法三步走。注意遞歸出口 def mergesort(array): if len(array) < 2: return array else: mid = int(len(array) // 2) right_half = mergesort(array[mid:]) left_half = mergesort(array[:mid]) return merge_sorted_list(left_half, right_half) def test_mergesort(): import random ll = list(range(10)) random.shuffle(ll) print(ll) print(mergesort(ll)) test_mergesort()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章