lecture 13 - mcgill cimlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106...
TRANSCRIPT
![Page 1: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/1.jpg)
1
COMP 250
Lecture 13
mergesort, quicksort
Oct. 6, 2017
![Page 2: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/2.jpg)
Time complexity
2
𝑂 𝑛• List operations:
findMax, remove
• grade school addition or subtraction
• …..
𝑂 𝑛2
• insertion/selection/bubble sort
• grade school multiplication
• ……
𝑂 𝑙𝑜𝑔2 𝑛• convert to binary
• binary search
• ……
![Page 3: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/3.jpg)
210 ≈ 103
220 ≈ 106
230 ≈ 109
Computers perform ~109 operations per second.
![Page 4: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/4.jpg)
𝑛
210 ≈ 103
220 ≈ 106
230 ≈ 109
𝑛2
106
1012
1018
𝑙𝑜𝑔2 𝑛
10
20
30
Computers perform ~109 operations per second.
centuriessecond
minutes…hours
![Page 5: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/5.jpg)
Better sorting algorithms ?
5
𝑂 𝑛 < ? < 𝑂( 𝑛2 )
![Page 6: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/6.jpg)
Mergesort
Given a list, partition it into two halves (1st & 2nd).
Sort each half (recursively).
Merge the two halves.
This turns out to be much faster than the other list sorting algorithms we have seen.
6
![Page 7: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/7.jpg)
7
810
311
617
16254
13
810
311
61
716
254
13
1368
1011
2457
1316
12345678
10111316
mergesort
mergesort
mergepartition
![Page 8: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/8.jpg)
8
mergesort(list){if list.length == 1
return listelse{
mid = (list.size - 1) / 2 list1 = list.getElements(0,mid)list2 = list.getElements(mid+1, list.size-1)list1 = mergesort(list1)list2 = mergesort(list2)return merge( list1, list2 )
}}
![Page 9: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/9.jpg)
9
mergesort(list){if list.length == 1
return listelse{
mid = (list.size - 1) / 2 list1 = list.getElements(0,mid)list2 = list.getElements(mid+1, list.size-1)list1 = mergesort(list1)list2 = mergesort(list2)return merge( list1, list2 )
}}
![Page 10: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/10.jpg)
10
mergesort(list){if list.length == 1
return listelse{
mid = (list.size - 1) / 2 list1 = list.getElements(0,mid)list2 = list.getElements(mid+1, list.size-1)list1 = mergesort(list1)list2 = mergesort(list2)return merge( list1, list2 )
}}
![Page 11: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/11.jpg)
11
810
311
617
16254
13
810
311
61
716
254
13
1368
1011
2457
1316
12345678
10111316
mergesort
mergesort
mergepartition
![Page 12: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/12.jpg)
12
1368
1011
2457
1316
merge
head1
head2
![Page 13: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/13.jpg)
13
1368
1011
2457
1316
1
merge
head1
head2
![Page 14: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/14.jpg)
14
1368
1011
2457
1316
12
merge
head1
head2
![Page 15: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/15.jpg)
15
1368
1011
2457
1316
123
merge
head1
head2
![Page 16: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/16.jpg)
16
1368
1011
2457
1316
1234
merge
head1
head2
![Page 17: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/17.jpg)
17
1368
1011
2457
1316
12345
merge
head1
head2
![Page 18: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/18.jpg)
18
1368
1011
2457
1316
123456
merge
head1
head2
![Page 19: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/19.jpg)
19
1368
1011
2457
1316
1234567merge
head1
head2
![Page 20: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/20.jpg)
20
1368
1011
2457
1316
123456781011
merge
head2
….and so on until one list is empty.
![Page 21: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/21.jpg)
21
1368
1011
2457
1316
1234567810111316
merge
Then, copy the remaining elements.
![Page 22: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/22.jpg)
22
merge( list1, list2){initialize list to be emptywhile (list1 is not empty) & (list2 is not empty){
if (list1.first < list2.first)list.addlast( list1.removeFirst(list1) )
elselist.addlast( list2.removeFirst(list2) )
}while list1 is not empty
list.addlast( list1.removeFirst(list1) )while list2 is not empty
list.addlast( list2.removeFirst(list2) )
return list}
![Page 23: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/23.jpg)
23
merge( list1, list2){initialize list to be emptywhile (list1 is not empty) & (list2 is not empty){
if (list1.first < list2.first)list.addlast( list1.removeFirst(list1) )
elselist.addlast( list2.removeFirst(list2) )
}while list1 is not empty
list.addlast( list1.removeFirst(list1) )while list2 is not empty
list.addlast( list2.removeFirst(list2) )
return list}
![Page 24: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/24.jpg)
810
311
617
16254
13
mergesort(list){if list.length == 1
return listelse{
mid = (list.size - 1) / 2 list1 = list.getElements(0,mid)list2 = list.getElements(mid+1, list.size-1)list1 = mergesort(list1)list2 = mergesort(list2)return merge( list1, list2 )
}}
![Page 25: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/25.jpg)
810
311
617
16254
13
810
311
61
716
254
13
list1
list2
![Page 26: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/26.jpg)
810
311
617
16254
13
810
311
61
716
254
13
810
3
1161
list1
list2
![Page 27: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/27.jpg)
810
311
617
16254
13
810
311
61
716
254
13
810
3
1161
810
3
list1
list2
![Page 28: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/28.jpg)
28
810
311
617
16254
13
810
311
61
716
254
13
810
3
1161
810
3
8
10
810
list1
list2
![Page 29: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/29.jpg)
810
311
617
16254
13
810
311
61
716
254
13
810
3
1161
810
3
8
10
810 3
810
list1
list2
![Page 30: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/30.jpg)
810
311
617
16254
13
810
311
61
716
254
13
810
3
1161
810
3
116
1
8
11
10
6
611
810
16
11
38
10list1
list2
![Page 31: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/31.jpg)
810
311
617
16254
13
810
311
61
716
254
13
810
3
1161
810
3
116
1
8
11
10
6
611
810
16
11
38
10
1368
1011
list1
list2
![Page 32: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/32.jpg)
32
810
311
617
16254
13
810
311
61
716
254
13
810
3
1161
54
716
2
810
3
116
1
716
2
54
1313
5
8
11
7
10
6
16
445
716
611
810
16
11
38
10
27
16
45
13
1368
1011
2457
1316
list1
list2
![Page 33: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/33.jpg)
33
810
311
617
16254
13
810
311
61
716
254
13
810
3
1161
54
716
2
810
3
116
1
716
2
54
1313
5
8
11
7
10
6
16
445
716
611
810
16
11
38
10
27
16
45
13
1368
1011
2457
1316
1234567810111316
![Page 34: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/34.jpg)
34
𝑙𝑜𝑔2𝑛
𝑛
Q: How many operations are required to mergesorta list of size 𝑛 ?
A: 𝑂( 𝑛 𝑙𝑜𝑔2 𝑛 )
This will become more clear a few lectures from now when we discuss recurrences.
𝑙𝑜𝑔2𝑛
𝑛
![Page 35: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/35.jpg)
𝑛
210 ≈ 103
220 ≈ 106
230 ≈ 109
𝑛2
106
1012
1018
𝑙𝑜𝑔2 𝑛
10
20
30
𝒏 𝒍𝒐𝒈𝟐 𝒏
𝟏𝟎𝟒
~𝟏𝟎𝟕
~𝟏𝟎𝟏𝟎
𝑛 𝑙𝑜𝑔2 𝑛 is much closer to 𝑛than to 𝑛2
![Page 36: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/36.jpg)
𝑛
210 ≈ 103
220 ≈ 106
230 ≈ 109
𝑛2
106
1012
1018
𝑙𝑜𝑔2 𝑛
10
20
30
Computers perform ~109 operations per second.
milliseconds minutes hours centuries
𝒏 𝒍𝒐𝒈𝟐 𝒏
𝟏𝟎𝟒
~𝟏𝟎𝟕
~𝟏𝟎𝟏𝟎
![Page 37: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/37.jpg)
37
mergesortquicksort
𝑂 𝑛 < 𝑂( 𝑛 𝑙𝑜𝑔2 𝑛) ≪ 𝑂( 𝑛2 )
bubble sortselection sortinsertion sort
![Page 38: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/38.jpg)
Quicksort
38
quicksort(list){if list.length <= 1
return listelse{
pivot = list.removeFirst() // or some other element list1 = list.getElementsLessThan(pivot)list2 = list.getElementsGreaterOrEqual(pivot)list1 = quicksort(list1)list2 = quicksort(list2)
}return concatenate( list1, e, list2 )
}
![Page 39: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/39.jpg)
Quicksort
39
quicksort(list){if list.length <= 1
return listelse{
pivot = list.removeFirst() // or some other element list1 = list.getElementsLessThan(pivot)list2 = list.getElementsGreaterOrEqual(pivot)list1 = quicksort(list1)list2 = quicksort(list2)
}return concatenate( list1, e, list2 )
}
![Page 40: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/40.jpg)
40
810
311
617
16254
13
3617254
10111613
12345678
10111316
quicksort
quicksort
partition
1234567
10111316
concatenate
pivot
![Page 41: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/41.jpg)
Quicksort can be done “in place”
41
quicksort( low, high ){if low > high
returnelse{
pivot = ___; // select index in {low, …, high} partitionIndex = makePartition (low, high, pivot)quicksort(low, partitionIndex - 1)quicksort(partionIndex + 1, high)
}}
Quicksort partitioning can be done ‘in place’ using a clever swapping and scanning technique. (See web for details, if interested.)
![Page 42: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/42.jpg)
42
810
311
617
16254
13
36172548
10111613
quicksort
quicksort
partition
12345678
10111316
pivot
![Page 43: Lecture 13 - McGill CIMlanger/250/13-mergesort-slides.pdf · 2017-10-06 · 210 ≈103 220≈106 230 ≈109 2 106 1012 1018 𝑙 𝑔2 10 20 30 Computers perform ~109operations per](https://reader034.vdocuments.mx/reader034/viewer/2022042420/5f37966047baf961846b2c34/html5/thumbnails/43.jpg)
Mergesort vs. Quicksort
• Mergesort typically uses an extra list. More space can hurt performance for big lists.
• We will discuss worst case performance of quicksort later in the course.
• See stackoverflow if you want opinions on which is better.
43