-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQuickSort_Q9.py
More file actions
47 lines (41 loc) · 1.23 KB
/
QuickSort_Q9.py
File metadata and controls
47 lines (41 loc) · 1.23 KB
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
# ucse20057 | Gayatri Rout | DSA assignment
# swapping function
def swap(ary, x, y):
ary[x], ary[y] = ary[y], ary[x]
# Quick Sort
def quickSort(ary):
if len(ary) == 0:
return ary
else:
pivot = ary[0]
i = 0
new_size = len(ary) - 1
for j in range(new_size):
if ary[j+1] < pivot:
swap(ary, j+1, i+1)
i = i + 1
swap(ary, 0, i)
# partitioning and sorting / divide and conquer
fhalf = quickSort(ary[:i])
shalf = quickSort(ary[i+1:])
fhalf.append(ary[i])
return fhalf + shalf
# Obtaining the array to be sorted
ary = []
size = int(input("Size of array? "))
for i in range(1, size+1):
ary.append(int(input("Enter element {0}: " .format(i))))
print("\nOriginal array:", end=" ")
print(ary)
# removing duplicates if any
ary = list(set(ary))
print("\nOriginal array (w/o duplicates):", end=" ")
print(ary)
new_size = len(ary) # size of ary after removing duplicates
if new_size == 1:
print("\nSorted array:", end=" ") # one element array is already sorted
print(ary)
else:
result = quickSort(ary)
print("\nSorted array:", end=" ")
print(result)