В настоящее время я пытаюсь реализовать сортировку и сортировку вставки в 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
Использование 'xrange' вместо' range' поможет, поскольку 'range' создает новый список. Вы также можете хранить 'len (sort)' в переменной, которая уменьшала бы вызовы функций. –
Да, но я думаю, что оба моих алгоритма используют диапазон более или менее равное количество раз. – rbharvs
Возможно, имеет значение то, что набор данных - это то, что вы пытаетесь сортировать. Вы пробовали это на нескольких наборах данных? –