-
Notifications
You must be signed in to change notification settings - Fork 3
/
selection_sort.py
45 lines (31 loc) · 1.27 KB
/
selection_sort.py
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
""" Python program for implementation of Selection Sort."""
def selection_sort(arr):
""" Time Complexity O(n ** 2).
Space Complexity O(1)."""
n = len(arr)
# Feedback messages are not mandatory for Bubble Sort, will be used within
# the code to show the steps during execustion, Thus deleting next variable
# will cause an ERROR.
outer_loop_result = 0
inner_loop_result = 0
# Outer loop, loop over all elements in the array.
for outer_loop in range(n):
# Feedback message.
outer_loop_result += 1
print(f"Result: {outer_loop_result} ==> {arr}")
# Set first index in the array as smallest.
smallest_index = outer_loop
# Shift by one step for each loop corresponding to the outer loop.
for inner_loop in range(smallest_index + 1, n):
if arr[smallest_index] > arr[inner_loop]:
smallest_index = inner_loop
# Feedback message.
inner_loop_result += 1
print(f" Inner: {inner_loop_result} ==> {arr}")
# Swamp elements, if needed.
arr[outer_loop], arr[smallest_index] = arr[smallest_index], arr[outer_loop]
arr = [6, 5, 1, 2, 4, 3]
selection_sort(arr)
print((5 * '\n') + "Sorted array is:")
for i in arr:
print(i)