我目前正在尝试在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
答案 0 :(得分:1)
insert_sort
O(N 2 )交换,而select_sort
进行N交换。
交换位于select_sort
的外部循环中,但位于insert_sort
的内部循环中。