Sorting - ERNETpkalra/col100/slides/12-Sorting.pdf · 2019-09-24 · 4 Simple Sorting Algorithm...

Post on 27-May-2020

6 views 0 download

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)