Untitled
unknown
plain_text
2 years ago
2.6 kB
13
Indexable
import random as r, time as t, multiprocessing as mu
def bubble_sort(nums):
start = t.time()
# Устанавливаем swapped в True, чтобы цикл запустился хотя бы один раз
swapped = True
k = 0 # Количество перестановок
while swapped:
swapped = False
for i in range(len(nums) - 1):
if nums[i] > nums[i + 1]:
# Меняем элементы
nums[i], nums[i + 1] = nums[i + 1], nums[i]
k += 1
# Устанавливаем swapped в True для следующей итерации
swapped = True
return [t.time() - start, k, 'bubble_sort']
array10 = [round(r.uniform(-100,100), 2) for x in range(7)]
def insertion_sort(nums):
start, k = t.time(), 0
# Сортировку начинаем со второго элемента, т.к. считается, что первый элемент уже отсортирован
for i in range(1, len(nums)):
item_to_insert = nums[i]
# Сохраняем ссылку на индекс предыдущего элемента
j = i - 1
# Элементы отсортированного сегмента перемещаем вперёд, если они больше
# элемента для вставки
while j >= 0 and nums[j] > item_to_insert:
nums[j + 1] = nums[j]
j -= 1;
# Вставляем элемент
nums[j + 1] = item_to_insert
k += 1
return [t.time() - start, k, 'insertion_sort']
def selection_sort(nums):
k, start = 0, t.time()
# Значение i соответствует кол-ву отсортированных значений
for i in range(len(nums)):
# Исходно считаем наименьшим первый элемент
lowest_value_index = i
# Этот цикл перебирает несортированные элементы
for j in range(i + 1, len(nums)):
if nums[j] < nums[lowest_value_index]:
lowest_value_index = j
# Самый маленький элемент меняем с первым в списке
nums[i], nums[lowest_value_index] = nums[lowest_value_index], nums[i]
k += 1
return [t.time() - start, k, 'selection_sort']
print(bubble_sort(array10))
print(insertion_sort(array10))
print(selection_sort(array10))Editor is loading...
Leave a Comment