Skip to content

Commit 39e3333

Browse files
Sorting.py
1 parent c26f5d2 commit 39e3333

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed

Sorting.py

+135
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
import time
2+
from numpy.random import randint
3+
import matplotlib.pyplot as plt
4+
5+
def mergeSort(array):
6+
if len(array) > 1:
7+
8+
r =len(array)//2
9+
L = array[:r]
10+
M = array[r:]
11+
12+
13+
mergeSort(L)
14+
mergeSort(M)
15+
16+
i = j = k = 0
17+
18+
while i < len(L) and j < len(M):
19+
if L[i] < M[j]:
20+
array[k] = L[i]
21+
i += 1
22+
else:
23+
array[k] = M[j]
24+
j += 1
25+
k += 1
26+
27+
28+
while i < len(L):
29+
array[k] = L[i]
30+
i += 1
31+
k += 1
32+
33+
while j < len(M):
34+
array[k] = M[j]
35+
j+= 1
36+
k += 1
37+
38+
39+
def partition(array, low, high):
40+
41+
pivot = array[high]
42+
i = low - 1
43+
44+
for j in range(low, high):
45+
if array[j] <= pivot:
46+
47+
i = i+1
48+
49+
(array[i], array[j]) = (array[j], array[i])
50+
51+
(array[i+1], array[high]) = (array[high], array[i+1])
52+
return i+1
53+
54+
55+
def quickSort(array, low, high):
56+
if low < high:
57+
pi = partition(array, low, high)
58+
quickSort(array, low, pi - 1)
59+
quickSort(array, pi + 1, high)
60+
61+
62+
def selectionSort(array, size):
63+
for step in range(size):
64+
min_idx = step
65+
66+
for i in range(step + 1, size):
67+
68+
if array[i] < array[min_idx]:
69+
min_idx = i
70+
(array[step], array[min_idx]) = (array[min_idx], array[step])
71+
72+
73+
def read_Input():
74+
a=[]
75+
n=int(input("Enter the number of TV Channels:"))
76+
print("Enter the no.of viewers")
77+
for i in range(0,n):
78+
l=int(input())
79+
a.append(l)
80+
return a;
81+
82+
elements = list()
83+
times = list()
84+
global labeldata
85+
print("1. Merge Sort 2. Quick Sort 3. Selection Sort")
86+
ch = int(input("Enter the Choice :"))
87+
if (ch==1):
88+
array=read_Input()
89+
mergeSort(array)
90+
labeldata="MergeSort"
91+
print("Sorted Array is:")
92+
print(array)
93+
elif(ch==2):
94+
array=read_Input()
95+
size = len(array)
96+
labeldata="QuickSort"
97+
quickSort(array, 0, size - 1)
98+
print('Sorted Array is:')
99+
print(array)
100+
if (ch==3):
101+
array=read_Input()
102+
size = len(array)
103+
labeldata="SelectionSort"
104+
selectionSort(array, size)
105+
print('Sorted Array is:')
106+
print(array)
107+
print("***************************Running Time Analysis************************")
108+
for i in range (1,11):
109+
110+
array = randint(0, 1000*i, 1000*i)
111+
start=time.time()
112+
113+
if ch==1:
114+
mergeSort(array)
115+
elif ch==2:
116+
size=len(array)
117+
quickSort(array, 0, size-1)
118+
else:
119+
size=len(array)
120+
selectionSort(array, size)
121+
122+
end=time.time()
123+
124+
print("Sorted List is:")
125+
print(len(array), "Elements Sorted by", labeldata,end-start)
126+
elements.append(len(array))
127+
times.append(end-start)
128+
129+
plt.xlabel('List Length')
130+
plt.ylabel('Time Complexity')
131+
labeldata="sort"
132+
plt.plot(elements, times, label=labeldata)
133+
plt.grid()
134+
plt.legend()
135+
plt.show(

0 commit comments

Comments
 (0)