选择效率排序与插入排序

时间:2013-04-18 22:40:02

标签: python sorting time-complexity

我目前正在尝试在python中实现插入排序和选择排序。我的两个实现都有效。但是,当我对排序进行计时时,选择排序的执行速度始终比插入排序快1.5倍,即使我的插入排序实现的次数与我的选择排序实现的比例大约是一半。我似乎无法找到理由。

def select_sort(data):
    for i in range(len(data)):
        minimum, index = None, i
        for j in range(i, len(data)):
            if minimum is None:
                minimum = data[j]
            if data[j] < minimum:
                minimum = data[j]
                index = j
        data[i], data[index] = data[index], data[i]
    return data

def insert_sort(data):
    for i in range(1, len(data)):
        for j in range(i, 0, -1):
            if data[j] >= data[j - 1]:
                break
            data[j], data[j - 1] = data[j - 1], data[j]
    return data

def time_sort(S):
    elapsed = []

    start = time()
    insert_sort(copy(S))
    elapsed.append(time() - start)

    start = time()
    select_sort(copy(S))
    elapsed.append(time() - start)

    return elapsed

1 个答案:

答案 0 :(得分:1)

insert_sort O(N 2 )交换,而select_sort进行N交换。

交换位于select_sort的外部循环中,但位于insert_sort的内部循环中。