Untitled
unknown
plain_text
2 years ago
2.6 kB
3
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