merge sort, quicksort
TRANSCRIPT
![Page 1: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/1.jpg)
MergeSort
Source: Gibbs & Tamassia
![Page 2: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/2.jpg)
2
MergeSort
MergeSort is a divide and conquer method of sorting
![Page 3: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/3.jpg)
3
MergeSort Algorithm
MergeSort is a recursive sorting procedure that uses at most O(n lg(n)) comparisons.
To sort an array of n elements, we perform the following steps in sequence:
If n < 2 then the array is already sorted. Otherwise, n > 1, and we perform the following
three steps in sequence: 1. Sort the left half of the the array using MergeSort. 2. Sort the right half of the the array using MergeSort. 3. Merge the sorted left and right halves.
![Page 4: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/4.jpg)
4
How to Merge
Here are two lists to be merged: First: (12, 16, 17, 20, 21, 27) Second: (9, 10, 11, 12, 19)
Compare12 and 9First: (12, 16, 17, 20, 21, 27) Second: (10, 11, 12, 19)New: (9)
Compare 12 and 10First: (12, 16, 17, 20, 21, 27) Second: (11, 12, 19)New: (9, 10)
![Page 5: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/5.jpg)
5
Merge Example
Compare 12 and 11First: (12, 16, 17, 20, 21, 27) Second: (12, 19)New: (9, 10, 11)
Compare 12 and 12First: (16, 17, 20, 21, 27) Second: (12, 19)New: (9, 10, 11, 12)
![Page 6: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/6.jpg)
6
Merge Example
Compare 16 and 12First: (16, 17, 20, 21, 27) Second: (19)New: (9, 10, 11, 12, 12)
Compare 16 and 19First: (17, 20, 21, 27) Second: (19)New: (9, 10, 11, 12, 12, 16)
![Page 7: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/7.jpg)
7
Merge Example
Compare 17 and 19First: (20, 21, 27) Second: (19)New: (9, 10, 11, 12, 12, 16, 17)
Compare 20 and 19First: (20, 21, 27) Second: ( )New: (9, 10, 11, 12, 12, 16, 17, 19)
![Page 8: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/8.jpg)
8
Merge Example
Checkout 20 and empty listFirst: ( ) Second: ( )New: (9, 10, 11, 12, 12, 16, 17, 19, 20,
21, 27)
![Page 9: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/9.jpg)
9
MergeSort
Original 24 13 26 1 12 27 38 15Divide in 2 24 13 26 1 12 27 38 15Divide in 4 24 13 26 1 12 27 38 15Divide in 8 24 13 26 1 12 27 38 15Merge 2 13 24 1 26 12 27 15 38Merge 4 1 13 24 26 12 15 27 38Merge 8 1 12 13 15 24 26 27 38
![Page 10: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/10.jpg)
10
Merge-Sort Tree An execution of merge-sort is depicted by a binary tree
– each node represents a recursive call of merge-sort and stores unsorted sequence before the execution and its partition sorted sequence at the end of the execution
– the root is the initial call – the leaves are calls on subsequences of size 0 or 1
7 2 9 4 2 4 7 9
7 2 2 7 9 4 4 9
7 7 2 2 9 9 4 4
![Page 11: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/11.jpg)
11
Execution Example
Partition
7 2 9 4 3 8 6 1
![Page 12: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/12.jpg)
12
Execution Example (cont.)
Recursive call, partition
7 2 9 4
7 2 9 4 3 8 6 1
![Page 13: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/13.jpg)
13
Execution Example (cont.)
Recursive call, partition
7 2 9 4
7 2
7 2 9 4 3 8 6 1
![Page 14: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/14.jpg)
14
Execution Example (cont.)
Recursive call, base case
7 2 9 4
7 2
7 7
7 2 9 4 3 8 6 1
![Page 15: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/15.jpg)
15
Execution Example (cont.)
Recursive call, base case
7 2 9 4
7 2
7 7 2 2
7 2 9 4 3 8 6 1
![Page 16: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/16.jpg)
16
Execution Example (cont.)
Merge
7 2 9 4
7 2 2 7
7 7 2 2
7 2 9 4 3 8 6 1
![Page 17: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/17.jpg)
17
Execution Example (cont.) Recursive call, …, base case, merge
7 2 9 4
7 2 2 7 9 4 4 9
7 7 2 2
7 2 9 4 3 8 6 1
9 9 4 4
![Page 18: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/18.jpg)
18
Execution Example (cont.)
Merge
7 2 9 4 2 4 7 9
7 2 2 7 9 4 4 9
7 7 2 2 9 9 4 4
7 2 9 4 3 8 6 1
![Page 19: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/19.jpg)
19
Execution Example (cont.)
Recursive call, …, merge, merge
7 2 9 4 2 4 7 9 3 8 6 1 1 3 6 8
7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6
7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1
7 2 9 4 3 8 6 1
![Page 20: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/20.jpg)
20
Execution Example (cont.)
Merge
7 2 9 4 2 4 7 9 3 8 6 1 1 3 6 8
7 2 2 7 9 4 4 9 3 8 3 8 6 1 1 6
7 7 2 2 9 9 4 4 3 3 8 8 6 6 1 1
7 2 9 4 3 8 6 1 1 2 3 4 6 7 8 9
![Page 21: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/21.jpg)
21
Complexity of MergeSortPass
NumberNumber of
mergesMerge list
length# of comps / moves per
merge
1 2k-1 or n/2 1 or n/2k 21
2 2k-2 or n/4 2 or n/2k-1 22
3 2k-3 or n/8 4 or n/2k-2 23
. . . .
. . . .
. . . .k – 1 21 or n/2k-1 2k-2 or n/4 2k-1
k 20 or n/2k 2k-1 or n/2 2k
k = log n
![Page 22: Merge Sort, Quicksort](https://reader034.vdocument.in/reader034/viewer/2022052217/5891a00f1a28ab3d4b8c2f32/html5/thumbnails/22.jpg)
22
Multiplying the number of merges by the maximum number of comparisons per merge, we get:
(2k-1)21 = 2k
(2k-2)22 = 2k
(21)2k-1 = 2k
(20)2k = 2k
Complexity of MergeSort
k passes each require 2k comparisons (and moves). But k = lg n and hence, we get lg(n) n comparisons or O(n lgn)