Data Structures and Algorithms - L3
Data Structures and Algorithms - L3
(CS F211)
Comparison Based
3 7 9 17 5 2 21 18 33 4 Bubble Sort
Quick Sort
Insertion Sort
Merge Sort
Heap Sort
17 9 7 5 3 33 21 18 4 2
? Non-Comp Based
Radix Sort
Bucket Sort
33 21 18 17 9 7 5 4 3 2
Obvious Applications:
Sort a list of names.
Organize an MP3 library.
Display Google PageRank results.
4
BITS Pilani, Hyderabad Campus
Bubble Sort
5
BITS Pilani, Hyderabad Campus
Hence complexity is f(n) . O(n) = O(n) * O(n) = O(n2)
6
BITS Pilani, Hyderabad Campus
• Traverse a collection of elements
– Move from the front to the end
– “Bubble” the largest value to the end using pair-
wise comparisons and swapping
1 2 3 4 5 6
77 42 35 12 101 5
1 2 3 4 5 6
42 Swap 42
77 77 35 12 101 5
1 2 3 4 5 6
42 7735 Swap 35
77 12 101 5
1 2 3 4 5 6
42 35 12 Swap 12
77 77 101 5
1 2 3 4 5 6
42 35 12 77 101 5
No need to swap
1 2 3 4 5 6
42 35 12 77 5 Swap 101
101 5
1 2 3 4 5 6
42 35 12 77 5 101
1 2 3 4 5 6
42 35 12 77 5 101
1 2 3 4 5 6
35 12 42 5 77 101
1 2 3 4 5 6
N-1
12 35 5 42 77 101
1 2 3 4 5 6
12 5 35 42 77 101
1 2 3 4 5 6
5 12 35 42 77 101
3 1 4 6 2 5 7
1 3 4 2 5 6 7
1 3 2 4 5 6 7
17
BITS Pilani, Hyderabad Campus
Merge Sort
Divide and Conquer cuts the problem in half each time, but uses the
result of both halves:
cut the problem in half until the problem is trivial
solve for both halves
combine the solutions
The key to Merge Sort is merging two sorted lists into one, such that
if you have two lists X (x1x2…xm) and Y(y1y2…yn) the resulting
list is Z(z1z2…zm+n)
Example: L1 = { 3 8 9 }
L2 = { 1 5 7 }
merge(L1, L2) = { 1 3 5 7 8 9 }
X: 3 10 23 54 Y: 1 5 25 75
Result:
X: 3 10 23 54 Y: 5 25 75
Result: 1
X: 10 23 54 Y: 5 25 75
Result: 1 3
X: 10 23 54 Y: 25 75
Result: 1 3 5
X: 23 54 Y: 25 75
Result: 1 3 5 10
X: 54 Y: 25 75
Result: 1 3 5 10 23
X: 54 Y: 75
Result: 1 3 5 10 23 25
X: Y: 75
Result: 1 3 5 10 23 25 54
X: Y:
Result: 1 3 5 10 23 25 54 75
A divide-and-conquer algorithm:
• Divide the unsorted array into 2 halves until the sub-arrays only
contain one element
• Merge the sub-problem solutions together:
– Compare the sub-array’s first elements
– Remove the smallest element and put it into the result array
– Continue the process until all elements have been put into
the result array
37 23 6 89 15 12 2 19
Mergesort(Pass an array)
if array size > 1
Divide array in half
Call Mergesort on first half.
Call Mergesort on second half.
Merge two halves.
Statement Effort
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14 6 67 33 42
98 23 45 14
98 23
98 23 45 14 6 67 33 42
98 23 45 14
98 23
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23
23
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23
23 98
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14
23 98
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14
23 98
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14
23 98 14
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14
23 98 14 45
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14
23 98 14 45
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14
23 98 14 45
14
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14
23 98 14 45
14 23
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14
23 98 14 45
14 23 45
Merge
98 23 45 14 6 67 33 42
98 23 45 14
98 23 45 14
23 98 14 45
14 23 45 98
Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14
23 98 14 45
14 23 45 98
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67
23 98 14 45
14 23 45 98
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67
23 98 14 45
14 23 45 98 Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67
23 98 14 45 6
14 23 45 98 Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67
23 98 14 45 6 67
14 23 45 98 Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67
14 23 45 98
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67
14 23 45 98 Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33
14 23 45 98 Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98
Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6
Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33
Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42
Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
Merge
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
Merge
BITS Pilani, Hyderabad Campus
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
Merge
BITS Pilani, Hyderabad Campus
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
6 14
Merge
BITS Pilani, Hyderabad Campus
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
6 14 23
Merge
BITS Pilani, Hyderabad Campus
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
6 14 23 33
Merge
BITS Pilani, Hyderabad Campus
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
6 14 23 33 42
Merge
BITS Pilani, Hyderabad Campus
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
6 14 23 33 42 45
Merge
BITS Pilani, Hyderabad Campus
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
6 14 23 33 42 45 67
Merge
BITS Pilani, Hyderabad Campus
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
6 14 23 33 42 45 67 98
Merge
BITS Pilani, Hyderabad Campus
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42
14 23 45 98 6 33 42 67
6 14 23 33 42 45 67 98
23 O(1) 98 23 45 14 6 67 33 42
23 98 14 45 6 67 33 42 O(n)
Number of operations = (log n) (O(n)) = O(n logn) log n
14 23 45 98 6 33 42 67 O(n)
6 14 23 33 42 45 67 98 O(n)
6 14 23 33 42 45 67 98