Lecture 11 - Merge Sort
Lecture 11 - Merge Sort
1
Merge Sort
• Idea: Order a list of values by recursively dividing the list in half until
each sub-list has one element, then recombining
• More specifically:
• Divide the n element sequence to be sorted into two subsequences
of n/2 elements each.
• Conquer: Sort the two subsequences to produce the sorted answer.
• Combine: Merge the two sorted sub sequences to produce the
sorted answer.
2
sort merge(0, n/2, n-1) sort
Merge Sort
Base Case: When the sequences to be sorted has length 1.
Unsorted
Sorted 66
12 108
14 56
34 14
56 89
66 12
89 108
34
Divide
Merge Divide
Merge
66
14 108
56 56
66 108
14 89
12 12
34 34
89
Divide
Merge Divide
Merge Divide
Merge Divide
BCase
Merge
66
66 108
108 56
14 14
56 89
12 12
89 34
Merge
Divide
BCase Divide
BCase
Merge Divide
BCase
Merge Divide
BCase
Merge
3
66 108 56 14 89 12
Merge Sort
5 1 3 4 2 6
4
Merge Sort
5 1 3 4 2 6
5 1 3 4 2 6
5
Merge Sort
5 1 3 4 2 6
5 1 3 4 2 6
5 1 3 4 2 6
6
Merge Sort
5 1 3 4 2 6
5 1 3 4 2 6
5 1 3 4 2 6
5 1 3 4 2 6
7
Merge Sort
5 1 3 4 2 6
5 1 3 4 2 6
5 1 3 4 2 6
5 1 3 4 2 6
1 5 3 2 4 6
8
Merge Sort
5 1 3 4 2 6
5 1 3 4 2 6
5 1 3 4 2 6
5 1 3 4 2 6
1 5 3 2 4 6
1 3 5 2 4 6
9
Merge Sort
5 1 3 4 2 6
5 1 3 4 2 6
5 1 3 4 2 6
5 1 3 4 2 6
1 5 3 2 4 6
1 3 5 2 4 6
10
1 2 3 4 5 6
Merge Sort
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 11
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑠𝑜𝑟𝑡𝑒𝑑 𝑠𝑜𝑟𝑡𝑒𝑑
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 12
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 𝑅
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 13
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 𝑅
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 14
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 𝑅 2 4 6 9
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 15
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 16
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 17
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 18
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 19
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 20
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 21
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 22
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 23
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 24
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 25
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 26
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 27
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 28
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 29
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 30
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 31
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 32
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 33
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 34
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 35
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 36
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 37
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 38
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 39
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 40
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 41
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 42
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 43
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 44
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 45
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 46
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 47
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 48
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 49
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞ 𝐴 1 3 7 8 2 4 6 9
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟 Unsorted Arrays
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1 𝐴 1 2 3 4 6 7 8 9
𝑒𝑙𝑠𝑒 Arrays Sorted 50
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞ 𝐴 1 3 7 8 2 4 6 9
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟 Unsorted Arrays
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1 𝐴 1 2 3 4 6 7 8 9
𝑒𝑙𝑠𝑒 Arrays Sorted 51
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1 Space Complexity of Merge Procedure = 𝑂(𝑛)
}
Merge Sort Example
𝑘
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞ 𝐴 1 3 7 8 2 4 6 9
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1 Unsorted Arrays
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖 𝐴 1 2 3 4 6 7 8 9
𝑖 =𝑖+1
Arrays Sorted 52
𝑒𝑙𝑠𝑒
𝐴 𝑘 = 𝑅[𝑗]
Time Complexity of Merge Procedure = 𝑂 𝑛
𝑗=𝑗+1
}
Merge Sort
𝑴𝒆𝒓𝒈𝒆𝑺𝒐𝒓𝒕 𝑨, 𝒑, 𝒓 Space Complexity of Merge sort
{ 𝑛
𝐼𝑓 (𝑝 < 𝑟)
{
𝑝 + 𝑟ൗ 𝑛ൗ 𝑛ൗ
𝑞= 2 2 2
𝑀𝑒𝑟𝑔𝑒𝑆𝑜𝑟𝑡 (𝐴, 𝑝, 𝑞)
𝑀𝑒𝑟𝑔𝑒𝑆𝑜𝑟𝑡 (𝐴, 𝑞 + 1, 𝑟) 𝑛ൗ 𝑛ൗ 𝑛ൗ 𝑛ൗ
𝑀𝑒𝑟𝑔𝑒 (𝐴, 𝑝, 𝑞, 𝑟) 4 4 4 4
} .
} .
.
𝑂(𝑐 log 𝑛) ≈ 𝑂(log 𝑛)
𝑛
𝑴𝒆𝒓𝒈𝒆𝑺𝒐𝒓𝒕 𝑨, 𝒑, 𝒓 𝑇(𝑛)
{ 𝑛ൗ 𝑛ൗ
𝐼𝑓 (𝑝 < 𝑟) 2 2
{
𝑝 + 𝑟ൗ 𝑛ൗ 𝑛ൗ 𝑛ൗ 𝑛ൗ
𝑞= 2 4 4 4 4
𝑀𝑒𝑟𝑔𝑒𝑆𝑜𝑟𝑡 (𝐴, 𝑝, 𝑞) 𝑇(𝑛ൗ2) .
𝑀𝑒𝑟𝑔𝑒𝑆𝑜𝑟𝑡 (𝐴, 𝑞 + 1, 𝑟) 𝑇(𝑛ൗ2) .
𝑀𝑒𝑟𝑔𝑒 (𝐴, 𝑝, 𝑞, 𝑟) 𝑂(𝑛) .
}
}
𝑇 𝑛 = 2 ∗ 𝑇 𝑛ൗ2 + 𝑂 𝑛
𝑇 𝑛 = 𝜃(𝑛 log 𝑛)
54
Difference