Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting...

91
Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort Sorting Data and File Structures Laboratory http://www.isical.ac.in/ ~ dfslab/2017/index.html Indian Statistical Institute Kolkata September 14, 2017 DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32

Transcript of Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting...

Page 1: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Sorting

Data and File Structures Laboratoryhttp://www.isical.ac.in/~dfslab/2017/index.html

Indian Statistical Institute Kolkata

September 14, 2017

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•1 of 32

Page 2: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Outline

1 Insertion Sort

2 Bubblesort

3 Merge-Sort

4 Quicksort

5 Counting Sort

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•2 of 32

Page 3: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

The problem of sorting

Input: sequence < a1, a2, . . . , an > of numbers.

Output: permutation < a′1, a′2, . . . , a′n > such thata′1 ≤ a′2 ≤ . . . ≤ a′n.

Example:Input: 8 2 4 9 3 6

Output: 2 3 4 6 8 9

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•3 of 32

Page 4: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Outline

1 Insertion Sort

2 Bubblesort

3 Merge-Sort

4 Quicksort

5 Counting Sort

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•4 of 32

Page 5: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Insertion sort

Start with an empty left hand and the cardsface down on the table.

Remove one card at a time from the tableand insert it into the correct position in theleft hand.

To find the correct position for a card, wecompare it with each of the cards already inthe hand, from right to left

At all times, the cards held in the left handare sorted, and these cards were originallythe top cards of the pile on the table.

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•5 of 32

Page 6: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of insertion sort

8 2 4 9 3 6

•8 •2 4 9 3 6•2 •8 •4 9 3 6•2 •4 •8 •9 3 6•2 •4 •8 •9 •3 6•2 •3 •4 •8 •9 •6•2 •3 •4 •6 •8 •9

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•6 of 32

Page 7: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of insertion sort

8 2 4 9 3 6•8 •2 4 9 3 6

•2 •8 •4 9 3 6•2 •4 •8 •9 3 6•2 •4 •8 •9 •3 6•2 •3 •4 •8 •9 •6•2 •3 •4 •6 •8 •9

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•6 of 32

Page 8: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of insertion sort

8 2 4 9 3 6•8 •2 4 9 3 6•2 •8 •4 9 3 6

•2 •4 •8 •9 3 6•2 •4 •8 •9 •3 6•2 •3 •4 •8 •9 •6•2 •3 •4 •6 •8 •9

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•6 of 32

Page 9: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of insertion sort

8 2 4 9 3 6•8 •2 4 9 3 6•2 •8 •4 9 3 6•2 •4 •8 •9 3 6

•2 •4 •8 •9 •3 6•2 •3 •4 •8 •9 •6•2 •3 •4 •6 •8 •9

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•6 of 32

Page 10: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of insertion sort

8 2 4 9 3 6•8 •2 4 9 3 6•2 •8 •4 9 3 6•2 •4 •8 •9 3 6•2 •4 •8 •9 •3 6

•2 •3 •4 •8 •9 •6•2 •3 •4 •6 •8 •9

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•6 of 32

Page 11: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of insertion sort

8 2 4 9 3 6•8 •2 4 9 3 6•2 •8 •4 9 3 6•2 •4 •8 •9 3 6•2 •4 •8 •9 •3 6•2 •3 •4 •8 •9 •6

•2 •3 •4 •6 •8 •9

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•6 of 32

Page 12: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of insertion sort

8 2 4 9 3 6•8 •2 4 9 3 6•2 •8 •4 9 3 6•2 •4 •8 •9 3 6•2 •4 •8 •9 •3 6•2 •3 •4 •8 •9 •6•2 •3 •4 •6 •8 •9

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•6 of 32

Page 13: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Insertion Sort Pseudocode

Insertion-Sort(A)

1 for j = 2 to A. length2 key = A[j ]3 // Insert A[j ] into the sorted sequence A[1 . . j − 1].4 i = j − 15 while i > 0 and A[i ] > key6 A[i + 1] = A[i ]7 i = i − 18 A[i + 1] = key

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•7 of 32

Page 14: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Outline

1 Insertion Sort

2 Bubblesort

3 Merge-Sort

4 Quicksort

5 Counting Sort

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•8 of 32

Page 15: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Bubble Sort

Starts at the beginning of the data set.

Compares the first two elements.

If the first is greater than the second, then it swaps them.

It continues doing this for each pair of adjacent elements tothe end of the data set.

It then starts again with the first two elements.

Repeating until no swaps have occurred on the last pass.

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•9 of 32

Page 16: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6

•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 17: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 18: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 19: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 20: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 21: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required

2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 22: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 23: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete

•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 24: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 25: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 26: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 27: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 28: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of bubble sort

8 2 4 9 3 6•8 •2 4 9 3 6 J Swap required

2 •8 •4 9 3 6 J Swap required

2 4 •8 •9 3 6 J Swap NOT required

2 4 8 •9 •3 6 J Swap required

2 4 8 3 •9 •6 J Swap required2 4 8 3 6 9

2 4 8 3 6 •9 J Phase 1 complete•2 •4 8 3 6 •9 J Swap NOT required

2 •4 •8 3 6 •9 J Swap NOT required

2 4 •8 •3 6 •9 J Swap required

2 4 3 •8 •6 •9 J Swap required

2 4 3 6 •8 •9 J Phase 2 complete

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•10 of 32

Page 29: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Bubble Sort Pseudocode

Bubblesort(A)

1 for i = 1 to A.length− 12 for j = A.length downto i + 13 if A[j ] < A[j − 1]4 Exchange A[j ] with A[j − 1]

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•11 of 32

Page 30: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Outline

1 Insertion Sort

2 Bubblesort

3 Merge-Sort

4 Quicksort

5 Counting Sort

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•12 of 32

Page 31: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

Question: Suppose we have two sorted array L[p..q] andR [q + 1..r ]. How to merges them to form a single sorted array

A[p..r ]?

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•13 of 32

Page 32: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•14 of 32

Page 33: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•14 of 32

Page 34: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•14 of 32

Page 35: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•15 of 32

Page 36: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•15 of 32

Page 37: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•15 of 32

Page 38: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•16 of 32

Page 39: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•16 of 32

Page 40: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•16 of 32

Page 41: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Pseudocode

Merge(A, p, r)

1 n1 = q − p + 12 n2 = r − q3 let L[1..n1 + 1] and R [1..n2 + 1 be new arrays4 for i = 1 to n15 L[i ] = A[p + i − 1]6 for j = 1 to n27 R [j ] = A[q + j ]8 L[n1 + 1] = ∞ and R [n2 + 1] = ∞9 i = 1 and j = 1

10 for k = p to r11 if L[i ] ≤ R [j ]12 A[k ] = L[i ]13 i = i + 114 else A[k ] = R [j ]15 j = j + 1

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•17 of 32

Page 42: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Mergesort Algorithm

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•18 of 32

Page 43: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Merge Sort Pseudocode

Merge-Sort(A, p, r)

1 if p < r2 q = b(p + r)/2c3 Merge-Sort(A, p, q)4 Merge-Sort(A, q + 1, r)5 Merge(A, p, q, r)

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•19 of 32

Page 44: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Outline

1 Insertion Sort

2 Bubblesort

3 Merge-Sort

4 Quicksort

5 Counting Sort

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•20 of 32

Page 45: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Quicksort Outline

Choose one of the elements in the array to act as the pivot.

Create a temporary array L to hold all elements smaller thanthe pivot and another array R to hold all those which arelarger.

Ideally the pivot should be chosen so that L and R are asnearly equal in size as possible – i.e., the pivot is the median –but in a simple implementation we can just take the pivot tobe the last element in the array).

Recursively call QuickSort on L and R sub-arrays.

Append together the (sorted) left hand array L, the pivot, andthe (sorted) right hand array R.

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•21 of 32

Page 46: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Partition Procedure

Question: Given an array A[p..r ], partition it into three parts asfollows

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•22 of 32

Page 47: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Partition Procedure

Partition(A, p, r)

1 x = A[r ]2 i = p − 13 for j = p to r − 14 if A[j ] ≤ x5 i = i + 16 Exchange A[i ] with A[j ]7 Exchange A[i + 1] with A[r ]8 return i + 1

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•23 of 32

Page 48: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Example of Partition Procedure

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•24 of 32

Page 49: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Quicksort Procedure

Quicksort(A, p, r)

1 if p < r2 q = Partition(A, p, q)3 Quicksort(A, p, q − 1)4 Quicksort(A, q, r)

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•25 of 32

Page 50: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Outline

1 Insertion Sort

2 Bubblesort

3 Merge-Sort

4 Quicksort

5 Counting Sort

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•26 of 32

Page 51: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort

Each input elements is an integer in the range [0, k ], i.e., n⇐no. of elements and k ⇐ highest value element.

Example: For input set : 4, 1, 3, 4, 3, n = 5 and k = 4

It determines for each input element x , the number ofelements less than x . And it uses this information to placeelement x directly into its position in the output array.

For example if there exits 17 elements less that x then x isplaced into the 18-th position into the output array.

The algorithm uses three array:Input Array: A[1..n] store input data whereA[j ] ∈ {1, 2, 3, . . . , k}Output Array: B [1..n] finally store the sorted dataTemporary Array: C [1..k ] store data temporarily

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•27 of 32

Page 52: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Pseudocode

Counting Sort1. Counting-Sort(A, B, k)

2. Let C[0…..k] be a new array

3. for i=0 to k

4. C[i]= 0;

5. for j=1 to A.length or n

6. C[ A[j] ] = C[ A[j] ] + 1;

7. for i=1 to k

8. C[i] = C[i] + C[i-1];

9. for j=n or A.length down to 1

10. B[ C[ A[j] ] ] = A[j];

11. C[ A[j] ] = C[ A[j] ] - 1;

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•28 of 32

Page 53: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Pseudocode

Counting Sort1. Counting-Sort(A, B, k)

2. Let C[0…..k] be a new array

3. for i=0 to k [Loop 1]

4. C[i]= 0;

5. for j=1 to A.length( or n) [Loop 2]

6. C[ A[j] ] = C[ A[j] ] + 1;

7. for i=1 to k [Loop 3]

8. C[i] = C[i] + C[i-1];

9. for j=n or A.length down to 1 [Loop 4]

10. B[ C[ A[j] ] ] = A[j];

11. C[ A[j] ] = C[ A[j] ] - 1;

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•28 of 32

Page 54: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Counting-sort example

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0 3 3

0

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 55: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 1

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0 3 3

0 0 0 0 0 0 0 0 0 0

0

0 0

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 56: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 2

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0 3 3

0 0 0 0 1 0 0 0 0

0

0 0

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 57: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 2

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 3 3 0 0 2 2 3 3 0 0 3 3

0 0 0 0 1 1 0 0 0 0

0

1

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 58: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 2

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 0 0 2 2 3 3 0 0 3 3

0 0 0 0 1 1 1 0 0

0

1 1

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 59: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 2

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 2 2 3 3 0 0 3 3

1 0 0 1 1 1 1 0 0

0

1 1

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 60: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 2

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 3 3 0 0 3 3

1 1 0 0 2 1 1 0 0

0

1 1

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 61: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 2

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 0 0 3 3

1 1 0 0 2 2 2 0 0

0

1 1

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 62: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 2

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 3 3

2 0 0 2 2 2 2 0 0

0

1 1

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 63: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 2

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0 3

2 2 0 0 2 2 3 0 0

0

1 1

5

1 2 3 4 5 6 7 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 64: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

End of Loop 2

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0

2 2 0 0 2 2 0 0

0

1 1

5

1 2 3 4 5 6 7 8

3 3

3 3

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 65: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 3

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0

2 0 2 2 0 0

0

1 1

5

1 2 3 4 5 6 7 8

3 3

3 3

C: 2 2 0 0 1 1 3 3

1 2 3 40 5

2 2 2

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 66: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 3

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0

2 2 2 2 0 0

0

1 1

5

1 2 3 4 5 6 7 8

3 3

3 3

C: 2 2 4 0 0 1 1 3 3

1 2 3 40 5

2 2

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 67: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 3

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0

4 2 2 0 0

0

1 1

5

1 2 3 4 5 6 7 8

3

3 3

C: 2 2 4 4 0 0 1 1 7

1 2 3 40 5

2 2

2 2

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 68: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 3

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0

2 2 0

0

1 1

5

1 2 3 4 5 6 7 8

7

3 3

C: 2 2 4 4 7 1 1

1 2 3 40 5

2 2

2 2

4 4

7 7

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 69: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 3

A:

B:

1 2 3 4 5

C:

1 2 3 4

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0

2 2

0

1

5

1 2 3 4 5 6 7 8

3 3

C: 2 2 4 4 8

1 2 3 40 5

2 2

2 2

4 4

7 7

7 7 7

7 7

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 70: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

End of Loop 3

A:

B:

1 2 3 4 5

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0

1 2 3 4 5 6 7 8

3 3

C: 2 2 4 4

1 2 3 40 5

2 2 7 7 7 7 8 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 71: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 4

A:

B:

1 2 3 4 5

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0

1 2 3 4 5 6 7 8

3

C: 2 2 4 4

1 2 3 40 5

2 2 7 7 7 8 8

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 72: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 4

A:

B:

1 2 3 4 5

6 7 8

5 5 3 3 0 0 2 2 3 3 0 0

1 2 3 4 5 6 7 8

C: 2 2 4 4

1 2 3 40 5

2 2 7 7 7 8 8

3

J=8, then A[ j ]=A[8]=3

And B[ C[ A[j] ] ]

=B[ C[ 3 ] ]

=B[ 7]

So B[ C[ A[j] ] ] ←A[ j ]

=B[7]←3

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 73: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

A:

B:

1 2 3 4 5

6 7 8

5 5 3 3 0 0 2 2 3 3

1 2 3 4 5 6 7 8

C: 2 4 4

1 2 3 40 5

2 2 7 7 8 8

3 3 0

6 6

3 3

Executing Loop 4

J=8, then A[ j ]=A[8]=3

Then C[ A[j] ]

= C[ 3 ]

=7

So C[ A[j] ] = C[ A[j] ] -1

=7-1=6

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 74: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 4

A:

B:

1 2 3 4 5

6 7 8

5 5 3 3 0 0 2 2

1 2 3 4 5 6 7 8

C: 4 4

1 2 3 40 5

2 2 7 7 8 8

3 3

6

3 3

0 0

1 1

0 0

3

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 75: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 4

A:

B:

1 2 3 4 5

6 7 8

5 5 3 3 0 0

1 2 3 4 5 6 7 8

C: 4

1 2 3 40 5

2 2 7 7 8 8

3 3

5 5

3 3

0 0

0 0

2

1 1

3 3

3 3

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 76: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 4

A:

B:

1 2 3 4 5

6 7 8

5 5 3 3

1 2 3 4 5 6 7 8

C: 3 3

1 2 3 40 5

2 2 7 7 8 8

3 3

3 3

0 0

0 0

0

1

3 3

3 3

5 5

2 2

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 77: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 4

A:

B:

1 2 3 4 5

6 7 8

5 5

1 2 3 4 5 6 7 8

C:

1 2 3 40 5

2 2 7 7 8 8

3 3

3 3

0 0

0 0

0

0 0

3 3

3 3

5 3 3

0 0 2 2

3

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 78: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 4

A:

B:

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

C:

1 2 3 40 5

2 2 7 7 8

3 3

3 3

0 0

0 0

0 3 3

3 3

3 3

0 0 2 2

3 3 5

4 4

3 3

0 0

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 79: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

Executing Loop 4

A:

B:

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

C:

1 2 3 40 5

2 2 7 7 7 7

3 3

3 3

0 0

0 0

0 3 3

3 3

3

0 0 2 2

3 3 2

3 3

0 0

5 5

4 4

5 5

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 80: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Counting Sort Example

End of Loop 4

A:

B:

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

C:

1 2 3 40 5

2 2 7 7

3 3

3 3

0 0

0 0

0 3 3

3 3 0 0 2 2

3 3

3 3

0 0

5 5

4 4

5 5

2 2 7 7

2 2

Sorted data in Array B

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•29 of 32

Page 81: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Thank You !!!

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•30 of 32

Page 82: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Problem I

Calculate the number of comparisons andswaps involve in each of the sorting

techniques for a given array of n numbers?(Selection Sort, Bubble Sort,

Mergesort, Quicksort)

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•31 of 32

Page 83: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Lower bound of sorting

Prove a Lower Bound for any comparison based algorithmfor the Sorting Problem

How?Decision trees help us.

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•32 of 32

Page 84: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Lower bound of sorting

Decision-tree example

1:2

2:3

123 1:3

132 312

1:3

213 2:3

231 321

Each internal node is labeled i:j for i, j {1, 2,…, n}.•The left subtree shows subsequent comparisons if ai aj.•The right subtree shows subsequent comparisons if ai aj.

Sort a1, a2, …, an

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•32 of 32

Page 85: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Lower bound of sorting

Decision-tree example

1:2

2:3

123 1:3

132 312

1:3

213 2:3

231 321

Each internal node is labeled i:j for i, j {1, 2,…, n}.•The left subtree shows subsequent comparisons if ai aj.•The right subtree shows subsequent comparisons if ai aj.

9 4Sort a1, a2, a3 9, 4, 6

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•32 of 32

Page 86: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Lower bound of sorting

Decision-tree example

1:2

2:3

123 1:3

132 312

1:3

213 2:3

231 321

Each internal node is labeled i:j for i, j {1, 2,…, n}.•The left subtree shows subsequent comparisons if ai aj.•The right subtree shows subsequent comparisons if ai aj.

9 6

Sort a1, a2, a3 9, 4, 6

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•32 of 32

Page 87: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Lower bound of sorting

Decision-tree example

1:2

2:3

123 1:3

132 312

1:3

213 2:3

231 321

Each internal node is labeled i:j for i, j {1, 2,…, n}.•The left subtree shows subsequent comparisons if ai aj.•The right subtree shows subsequent comparisons if ai aj.

4 6

Sort a1, a2, a3 9, 4, 6

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•32 of 32

Page 88: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Lower bound of sorting

Decision-tree example

1:2

2:3

123 1:3

132 312

1:3

213 2:3

231 321

Each leaf contains a permutation , ,…, (n) to indicate that the ordering a(1) a(2) a(n) has been established.

4 6 9

Sort a1, a2, a3 9, 4, 6

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•32 of 32

Page 89: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Lower bound of sorting

Decision-tree modelA decision tree can model the execution of any comparison sort:•One tree for each input size n. •View the algorithm as splitting whenever

it compares two elements.•The tree contains the comparisons along

all possible instruction traces.•The running time of the algorithm = the

length of the path taken.•Worst-case running time = height of tree.

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•32 of 32

Page 90: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Lower bound of sorting

class InsertionSortAlgorithm {

for (int i = 1; i < a.length; i++) {

int j = i;

while ((j > 0) && (a[j-1] > a[i])) {

a[j] = a[j-1];

j--; }

a[j] = B; }}

Any comparison sortCan be turned into a Decision tree

1:2

2:3

123 1:3

132 312

1:3

213 2:3

231 321

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•32 of 32

Page 91: Sorting - Indian Statistical Institutepdslab/2017/lectures/sorting.pdfDFS Lab, ISI Kolkata Sorting September 14, 2017 Slide - 1 of 32 Insertion SortBubblesortMerge-SortQuicksortCounting

Insertion Sort Bubblesort Merge-Sort Quicksort Counting Sort

Lower bound of sorting

Lower bound for decision-tree sorting

Theorem. Any decision tree that can sort n elements must have height (n lg n) .Proof. The tree must contain n! leaves, since there are n! possible permutations. A height-hbinary tree has 2h leaves. Thus, n! 2h . h lg(n!) (lg is mono. increasing) lg ((n/e)n) (Stirling’s formula)= n lg n – n lg e= (n lg n) .

DFS Lab, ISI Kolkata Sorting September 14, 2017 Slide -•32 of 32