Sorting - ERNETpkalra/col100/slides/12-Sorting.pdf · 2019-09-24 · 4 Simple Sorting Algorithm...
Transcript of Sorting - ERNETpkalra/col100/slides/12-Sorting.pdf · 2019-09-24 · 4 Simple Sorting Algorithm...
Sorting
2
Simple Sorting Algorithm (Recap)
for in range(len(A)) : k = position of min. element between A [i] and A [N-1] Swap A [i] and A [k]
A[0] A[i] A[i+1] A[N-1]
Courtesy Prof P R Panda CSE, IIT Dellhi
Selection Sort
3
Simple Sorting Algorithm (Recap)
for j in range(i+1, len(A)): if A[min_index] > A[j]: min_index = j
t = A [ i ] A [ i ] = A [ k ] A [ k ] = t
A[0] A[i] A[i+1] A[N-1]
Courtesy Prof P R Panda CSE, IIT Dellhi
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
4
Simple Sorting Algorithm (Recap)
A[0] A[i] A[i+1] A[N-1]
Courtesy Prof P R Panda CSE, IIT Dellhi
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
5
Merge Sort Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lecture-slides-code/
6
Merge Sort Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lecture-slides-code/
7
Merge Sort Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lecture-slides-code/
8
Merge Sort Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lecture-slides-code/
9
Merge Sort Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lecture-slides-code/
10
Merge Sort Divide and conquer
11
Merge Sort Divide and conquer
Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lecture-slides-code/
12
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)
13
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
14
Quick Sort
15
Quick Sort
16
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)
17
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)
18
Insertion Sort Basic idea is to insert the current element at the right place. This may require shifting the elements
19
Insertion Sort
https://www.geeksforgeeks.org/insertion-sort/
20
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
21
Bubble Sort
https://codingcompiler.com/bubble-sort-program-in-c-using-function/
22
Bubble Sort
Time Complexity: O(n2)