Python Lecture 12-Sorting
Python Lecture 12-Sorting
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
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
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)
17
Insertion Sort
Basic idea is to insert the current element at the
right place.
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
22