Sorting
Simple Sorting Algorithm (Recap)
A[0] A[i] A[i+1] A[N-1]
for in range(len(A)) :
k = position of min. element
between A [i] and A [N-1]
Swap A [i] and A [k]
Selection Sort
Courtesy Prof P R Panda CSE, IIT Dellhi 2
Simple Sorting Algorithm (Recap)
A[0] A[i] A[i+1] A[N-1]
for in range(len(A)) :
k = position of min. element
between A [i] and A [N-1] for j in range(i+1, len(A)):
Swap A [i] and A [k] if A[min_index] > A[j]:
min_index = j
t=A[i]
A[i]=A[k]
A[k]=t Selection Sort
Courtesy Prof P R Panda CSE, IIT Dellhi 3
Simple Sorting Algorithm (Recap)
A[0] A[i] A[i+1] A[N-1]
Find Min for first time n elements: n-1 coparisons
Next time : n-2
.
.
up to 1
Total time = (n-1)+(n-2)+….+1=(n*(n-1))/2
O(n2)
Selection Sort
Courtesy Prof P R Panda CSE, IIT Dellhi 4
Merge Sort
Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-
5
science-and-programming-in-python-fall-2016/lecture-slides-code/
Merge Sort
Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-
6
science-and-programming-in-python-fall-2016/lecture-slides-code/
Merge Sort
Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-
7
science-and-programming-in-python-fall-2016/lecture-slides-code/
Merge Sort
Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-
8
science-and-programming-in-python-fall-2016/lecture-slides-code/
Merge Sort
Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-
9
science-and-programming-in-python-fall-2016/lecture-slides-code/
Merge Sort
Divide and conquer
10
Merge Sort
Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-
11
science-and-programming-in-python-fall-2016/lecture-slides-code/
Merge Sort
Running Time (Time Complexity as O)
Recurrence Relation:
T(1)=1 if n=1
T(n) = 2T(n/2) + cn
Solution O(nlog2n)
12
Quick Sort
Based on partitioing in two parts such that
first part is less than equal to x and right
part is greater than x. If x is an element of
the array then it gets located at the right
place if the seuqence is sorted.
A[0] A[N-1]
<=x x >x
pivot
13
Quick Sort
14
Quick Sort
15
Quick Sort
Choice of pivot decides the performance of the
algorithm. If the partitioning happens in two almost
equal parts, it is an ideal case.
Time Complexity
Best Case:
T(1)=1
T(n)=2T(n/2)+cn where cn is the partining time
Complexity O(nlog2n)
16
Quick Sort
Time Complexity
Worst Case:
T(1)=1
T(n)=T(n-1)+T(1)+ cn where cn is the partining
time
Complexity O(n2)
Average Case: O(nlog2n)
17
Insertion Sort
Basic idea is to insert the current element at the
right place.
This may require shifting the elements
18
Insertion Sort
19
https://www.geeksforgeeks.org/insertion-sort/
Insertion Sort
Time Complexity
Worst Case: O(n2) when elements are sorted in
the reverse order
Best Case: O(n) when elements are already
sorted 20
Bubble Sort
https://codingcompiler.com/bubble-sort-program-in-c-using-function/
21
Bubble Sort
Time Complexity: O(n2)
22