Amazing-Python-Scripts

Форк
0
47 строк · 1.3 Кб
1
"""
2
Selection Sort
3

4
Time Complexity: O(n^2)
5
"""
6

7

8
def FindMin(arr):
9
    """finds minimum element from the list"""
10
    min = 100000  # let list contain +ve numbers only: so minimum number is -1
11
    for i in range(len(arr)):
12
        if arr[i] < min:
13
            min = arr[i]
14
    return min
15

16

17
def SelectionSort(arr):
18
    size = len(arr)
19
    for i in range(size-1):  # decreased 1 iteration: no need to iterate to the last element
20
        minIndex = i  # pointer initialised to ith index for selection sort
21
        for j in range(minIndex+1, size):
22
            if arr[j] < arr[minIndex]:  # if current index < minimum index of the array
23
                minIndex = j  # minimum index updated
24
        # swapping element
25
        if i != minIndex:
26
            arr[i], arr[minIndex] = arr[minIndex], arr[i]
27

28

29
if __name__ == '__main__':
30
    elements = [100, 19, 28, 14, 6, 1, 99]
31
    print(FindMin(elements))  # prints minimum element from the list
32
    SelectionSort(elements)
33
    print(elements)
34

35
    # running test cases
36

37
    tests = [
38
        [89, 78, 61, 23, 21, 53, 12, 1, 2, 6, 3, 17, 9],
39
        [],
40
        [1, 2, 3, 4, 5],
41
        [350, 3, 1, 99, 12, 78, 12, 1200],
42
        [9]
43
    ]
44
    # print("Tests case testing...")
45
    for elements in tests:
46
        SelectionSort(elements)
47
        print(elements)
48

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.