Untitled

 avatar
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