-
Notifications
You must be signed in to change notification settings - Fork 0
/
selection_sort.py
60 lines (47 loc) · 1.65 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import random
def findMin(dataList):
minNum = dataList[0]
minIndex = 0
for index in range(0, len(dataList)):
if dataList[index] < minNum:
minNum, minIndex = dataList[index], index
return minNum, minIndex
def findMax(dataList):
maxNum = dataList[0]
maxIndex = 0
for index in range(0, len(dataList)):
if dataList[index] > maxNum:
maxNum, maxIndex = dataList[index], index
return maxNum, maxIndex
def selectionSort(dataList, reverse=False):
"""
Sorts the list of element using selection sort in ascending order(default).
In order to sort the elements in descending order,
use the parameter reverse=True.
Args:
reverse(bool): Default=false. If set to True,
sort in descending order otherwise ascending.
Returns:
list: Sorted list of elements
Raises:
None
"""
for index in range(0, len(dataList) - 1):
if reverse:
resNum, resIndex = findMax(dataList[index:])
else:
resNum, resIndex = findMin(dataList[index:])
resIndex += index
temp = dataList[index]
dataList[index] = resNum
dataList[resIndex] = temp
return dataList
if __name__ == "__main__":
# Generate a random sample of 10 elements between -100 and 100
inputList = random.sample(range(-100, 100), 10)
# Sort in ascending order
ascSort = selectionSort(inputList)
print("Sorted list in ascending order: {}".format(ascSort))
# Sort in descending order
descSort = selectionSort(inputList, reverse=True)
print("Sorted list in descending order: {}".format(descSort))