归并排序 VS 选择排序

import time, random

def random_List(start, end, length):
    random_array = []
    for i in range(0, length):
        random_array.append(random.randint(start, end))
    return  random_array

def merge_sort(arrayList):
    n = len(arrayList)
    if n <= 1:
        return arrayList
    mid = n // 2
    left_array = merge_sort(arrayList[:mid])
    right_array = merge_sort(arrayList[mid:])

    left, right = 0, 0
    newList = []
    while left < len(left_array) and right < len(right_array):
        if left_array[left] < right_array[right]:
            newList.append(left_array[left])
            left += 1
        else:
            newList.append(right_array[right])
            right += 1
    newList += left_array[left:]
    newList += right_array[right:]
    return newList


def select_sort(arrayList):
    for i in range(0, len(arrayList)):
        min = i
        for j in range(i, len(arrayList) - 1):
            if arrayList[j] < arrayList[min]:
                min = j
        arrayList[min], arrayList[i] = arrayList[i], arrayList[min]
    return  arrayList

if __name__ == "__main__":
    array = random_List(1, 100, 10000)
    print(array)
    start_time = time.time()
    result = merge_sort(array)
    ex_time = time.time() - start_time
    print(ex_time)
    print(result)
    print('--------------------')
    print(array)
    start_time = time.time()
    result = select_sort(array)
    ex_time = time.time() - start_time
    print(ex_time)
    print(result)

数组长度为10000, 来看看执行 的结果吧

在这里插入图片描述
看来作为选择排序PLUS的 归并排序确实很快

posted @ 2020-04-17 22:09  jacksonni  阅读(327)  评论(0编辑  收藏  举报