8 分鐘閱讀

1. quick_sort

def quick_sort(arr):
    if len(arr) <= 1:
        return arr

    pivot = arr[0]  # 基準點
    left = [x for x in arr[1:] if x <= pivot]  # 小於等於 pivot 的元素
    right = [x for x in arr[1:] if x > pivot]  # 大於 pivot 的元素

    return quick_sort(left) + [pivot] + quick_sort(right)

# 測試
arr = [5, 2, 9, 1, 6, 3]
sorted_arr = quick_sort(arr)
print(sorted_arr)

2. merge_sort

def merge_sort(arr):
    if len(arr) <= 1:
        return arr

    mid = len(arr) // 2
    left = merge_sort(arr[:mid])    # 左半邊遞迴排序
    right = merge_sort(arr[mid:])   # 右半邊遞迴排序

    return merge(left, right)

def merge(left, right):
    result = []
    i = j = 0

    # 將兩個已排序的子陣列合併
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1

    # 處理剩下的元素
    result.extend(left[i:])
    result.extend(right[j:])
    return result

# 測試
arr = [5, 2, 9, 1, 6, 3]
sorted_arr = merge_sort(arr)
print(sorted_arr)

標籤:

更新時間: