-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path02 selection sort.py
More file actions
57 lines (51 loc) · 5.12 KB
/
02 selection sort.py
File metadata and controls
57 lines (51 loc) · 5.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Сортировка выбором. [O(n*n)]
# Здесь мы создаем две функции:
# первая функция находит наименьший элемент в списке,
# а вторая функция сортирует список путем сравнения каждого элемента списка с наименьшим элементом.
# Создаем функцию "find_smallest", которая принимает один входной параметр:
# список "list_to_sort", который содержит числа.
# Эта функция возвращает индекс наименьшего элемента в списке.
def find_smallest(list_to_sort):
# Переменная "smallest" используется для хранения наименьшего элемента в списке.
# Изначально переменная "smallest" хранит самый первый элемент в списке - элемент под индексом "0".
smallest = list_to_sort[0]
# Переменная "smallest_index" используется для хранения индекса наименьшего элемента в списке.
# Изначально переменная "smallest_index" хранит индекс самого первого элемента в списке - "0".
smallest_index = 0
# Создаем цикл for, в котором перебираем все элементы списка, кроме элемента под индексом "0",
# и сравниваем эти элементы с элементом под индексом "0".
# Функция "range()" возвращает последовательность чисел, за исключением последнего число.
# Функция "len()" возвращает количество элементов в списке.
for i in range(1, len(list_to_sort)):
# Если находим элемент, который меньше элемента с индексом "0",
# то этот элемент становится новым наименьшим элементом в списке.
# Остальные элемента списка сравниваются с этим новым наименьшим элементом в списке.
if list_to_sort[i] < smallest:
smallest_index = i
smallest = list_to_sort[i]
# В результате работы цикла for функция "find_smallest" возвращает индекс наименьшего элемента в списке.
# Ключевое слово "return" выходит из функции и возвращает какое-либо значение.
return smallest_index
# Создаем функцию "selection_sort", которая принимает один входной параметр:
# список "list_to_sort", который содержит числа.
# Эта функция возвращает этот список отсортированный по возрастанию.
def selection_sort(list_to_sort):
# Переменная "new_list" используется для хранения отсортированного списка по возрастанию.
# Изначально эта переменная содержит пустой список.
new_list = []
# Создаем цикл for, в котором перебираем все элементы списка "list_to_sort".
for i in range(len(list_to_sort)):
# Вызываем функцию "find_smallest", чтобы найти индекс наименьшего элемента в списке.
# Переменная "smallest" хранит этот индекс наименьшего элемента в списке.
smallest = find_smallest(list_to_sort)
# Убираем элемент с индексом "smallest" из списка "list_to_sort" при помощи метода "pop".
# Также метод "pop" возвращает убранный элемент.
# Добавляем в конец списка "new_list" полученный от метода "pop" элемент при помощи метода "append".
# Затем цикл for продолжает свою работу сначала с уменьшенным списком "list_to_sort".
new_list.append(list_to_sort.pop(smallest))
# В результате работы цикла for функция "selection_sort" возвращает переменную "new_list",
# которая хранит отсортированный список по возрастанию.
return new_list
# Пытаемся отсортировать список [5, 3, 6, 2, 10] по возрастанию.
# Функция "print()" выводит некую указанную информацию на экран или на какое-либо другое устройство вывода.
print(selection_sort([5, 3, 6, 2, 10]))