# Untitled

unknown
plain_text
2 years ago
2.7 kB
1
Indexable
Never
```"""Write a python program to take input of percentage of students. Sort the percentages using
1. Insertion sort
2. Shell sort
"""

class Sorting:
def __init__(self):
self.array=[]
self.array_copy=[]

def create(self):
i=1
n=int(input("Enter number of elements"))
while i<=n:
try:
x=int(input("Enter element"))
if 0<=x<=100:
self.array.append(x)
self.array_copy.append(x)
i+=1
else:
print("Not a valid percentage")
except ValueError:
print("Enter integers only!")

def Insertion_sort(self):
for i in range(1, len(self.array)):  # Loop to traverse from second element to last
curr = self.array[i]  # Creating a variable to store the original value at ith location
j = i - 1  # creating another variable with value i-1
while (j >= 0 and self.array[j] > curr):
self.array[j + 1] = self.array[j]  # If element before is greater than swap it with the next position
j = j - 1  # Decrement the value of variable pos by 1
self.array[j + 1] = curr  # Change the value at location before to the original value
print("The list after iteration {} is\n".format(i), self.array)
def Shell_Sort(self):
p = 0  # Set p=0 Counter value
gap = len(self.array) // 2  # Set gap equal to floor division of length of list
while (gap > 0):
for i in range(gap, len(self.array)):
for j in range(i - gap, -1, -gap):
if self.array[j + gap] > self.array[j]:
break
else:
self.array[j + gap], self.array[j] = self.array[j], self.array[j + gap]
gap = gap // 2
p = p + 1  # increment counter
print("The list after pass", p, "is\n", self.array)

s1=Sorting()
s1.create()
go=True
while go:
print("1.Insertion Sort")
print("2.Shell Sort")
print("3.Exit")
ch=int(input("Enter operation to be performed"))

if ch==1:
print(s1.array)
s1.Insertion_sort()
print("The sorted list is",s1.array)
s1.array=s1.array_copy[:]
print("Original list",s1.array)
if ch==2:
print(s1.array)
s1.Shell_Sort()
print("The sorted list is",s1.array)
s1.array=s1.array_copy[:]
print("Original list",s1.array)
if ch==3:
print("Thank You")
break
```