Hi,
I am trying to write a program for selection sort. I got an example program:
https://www.geeksforgeeks.org/selection-sort/
I have written the following code:
import random
class SSSort:
arr = [] # class var access by className.arr
def __init__(self, n):
self.n = n
def generate1000_5digit_RandomNum(self):
for i in range(self.n):
num = random.randint(10000, 99999)
SSSort.arr.append(num)
for j in range(self.n):
print("random {0}".format(SSSort.arr[j]))
def find_the_min_element(self, i):
min = i
for j in range(i+1, self.n-1):
if (SSSort.arr[j] < SSSort.arr[min]):
min = j
return SSSort.arr[min]
def selectionSort(self):
for i in range(self.n-1):
min = self.find_the_min_element(i)
#swap min and ith element of array
temp = min
min = SSSort.arr[i]
SSSort.arr[i] = temp
for i in enumerate(SSSort.arr):
print(i)
def main(self):
self.generate1000_5digit_RandomNum()
self.selectionSort()
if __name__ == "__main__":
objSSSort = SSSort(20)
objSSSort.main()
I am getting the following output:
random 98046
random 21192
random 50964
random 81034
random 87750
random 50619
random 32092
random 52373
random 70434
random 61962
random 67618
random 87543
random 91959
random 25470
random 13246
random 37841
random 87932
random 40889
random 64008
random 94949
(0, 13246)
(1, 13246)
(2, 13246)
(3, 13246)
(4, 13246)
(5, 13246)
(6, 13246)
(7, 13246)
(8, 13246)
(9, 13246)
(10, 13246)
(11, 13246)
(12, 13246)
(13, 13246)
(14, 13246)
(15, 37841)
(16, 40889)
(17, 40889)
(18, 64008)
(19, 94949)
I think there is problem with swapping.
Somebody please guide me how to correct the above program;
Zulfi.