Mechanisms of implicit learning: What sort of structures can be implicitly learnt?
Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i
Transcript of Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i
Insertion SortMerge Sort
SWE2016-44
Insertion Sort
Insertion Sort
INSERTION-SORT (A, n) T(n)
for j ← 2 to n n-1
do key ← A[ j] n-1
i ← j – 1 n-1
while i > 0 and A[i] > key Best: σj=2n 1, Worst: σj=2
n j, Avg: 1
2σj=2n j + 1
do A[i+1] ← A[i] Best: σj=2n 1 − 1 , Worst: σj=2
n j − 1 , Avg: 1
2σj=2n j − 1
i ← i – 1 Best: σj=2n 1 − 1 , Worst: σj=2
n j − 1 , Avg: 1
2σj=2n j − 1
A[i+1] = key n-1
• Best Case: T n = 4 n − 1 + n − 1 = 5n − 5
• Worst Case: T n = 4 n − 1 +n n−1
2+ 2
n n−1
2− n − 1 =
3
2n2 +
1
2n − 2
• Average Case: T n = 4 n − 1 +1
2n − 1 +
1
2
n n−1
2+ 2
n n−1
2− n − 1 =
3
4n2 +
11
4n −
7
2
Insertion Sort
• Best Case: T n = 5n − 5
• Θ notation: Θ n 4n ≤ T n ≤ 5n for n ≥ 5
• Worst Case: T n =3
2n2 +
1
2n − 2
• Θ notation: Θ n2 3
2n2 ≤ T n ≤ 2n2 for n ≥ 4
• Average Case: T n =3
4n2 +
11
4n −
7
2
• Θ notation: Θ n2 3
4n2 ≤ T n ≤ n2 for n ≥ 6
Insertion Sort
• T n =3
4n2 +
11
4n −
7
2
• T n =3
4n2 +
11
4n −
7
2≤
3
4n2 +
11
4n ≤
3
4n2 +
11
4n2 =
7
2n2
• T n =3
4n2 +
11
4n −
7
2≥
3
4n2 −
7
2=
3
8n2 +
3
8n2 −
7
2≥
3
8n2 for all n ≥ 4
➔3
8n2 ≤ T n ≤
7
2n2 for n ≥ 4
➔ T n = Θ n2
Merge two sorted arrays
Merge two sorted arraysMERGE (A, B, m, n) T(m, n)
i = 1, j = 1 1
while i < m + 1 and j < n + 1 Best: m+ 1, Worst: m+ n, Avg: 1
2m+ 1 +
1
2m+ n
if A[i] < B[j]
Best: 3m , Worst: 3 m + n − 1 , Avg: 3
2m+
3
2m+ n − 1
do Z i + j − 1 = A i
i = i + 1
else
do Z i + j − 1 = B j
j = j + 1
for k = i to m
Best: n, Worst: 1, Avg: 1
2n +
1
2
Z k + n = A k
for k = j to n
Z m + k = B k
* Best Case Assumption: A i < B j for all i, j
• Best Case: T n = 4m + n + 2• Worst Case: T n = 4m + 4n − 1
• Average Case: T n = 4m +5
2n +
1
2
Merge two sorted arrays
• Best Case: T n = 4m + n + 2
• Θ notation: Θ m+ n m+ n ≤ T n ≤ 4 m+ n for m ≥ 1, n ≥ 1
• Worst Case: T n = 4m + 4n − 1
• Θ notation: Θ m+ n m+ n ≤ T n ≤ 4 m+ n for m ≥ 1, n ≥ 1
• Average Case: T n = 4m +5
2n +
1
2
• Θ notation: Θ m+ n 2 m+ n ≤ T n ≤ 4 m+ n form ≥ 1, n ≥ 1
Merge Sort
from: https://freefeast.info/general-it-articles/merge-sort-pseudo-code-of-merge-sort-merge-sort-in-data-structure-divide-and-conquer-approach/
Merge two
sorted arrays
Divide an array
into two arrays
Merge Sort
from: https://www.algorithmist.com/index.php/Merge_sort
Merge Sort
from: https://www.algorithmist.com/index.php/Merge_sort
mergesort (𝑙1)
mergesort (𝑎)
𝑙1 𝑙2mergesort (𝑙2)
Merge Sort
from: https://www.algorithmist.com/index.php/Merge_sort
mergesort (𝑙1)
mergesort (𝑎)
𝑙1 𝑙2mergesort (𝑙2) mergesort (𝑙1)
mergesort (𝑎)
𝑙1 𝑙2mergesort (𝑙2)
Merge Sort
from: https://www.algorithmist.com/index.php/Merge_sort
mergesort (𝑙1)
mergesort (𝑎)
𝑙1 𝑙2mergesort (𝑙2)
merge (𝑙1, 𝑙2)
mergesort (𝑙1) mergesort (𝑙2) mergesort (𝑙1) mergesort (𝑙2) mergesort (𝑙1) mergesort (𝑙2)
𝑙1 𝑙2
mergesort (𝑎)
𝑙1 𝑙2
merge (𝑙1, 𝑙2)
𝑙1 𝑙2
mergesort (𝑎)
merge (𝑙1, 𝑙2)
𝑙1 𝑙2
mergesort (𝑎)
𝑙1 𝑙2
merge (𝑙1, 𝑙2)
𝑙1 𝑙2
𝑙1 𝑙2
Merge Sort
from: https://www.algorithmist.com/index.php/Merge_sort
mergesort (𝑙1)
mergesort (𝑎)
𝑙1 𝑙2mergesort (𝑙2)
𝑙1 𝑙2merge (𝑙1, 𝑙2)
mergesort (𝑙1)
mergesort (𝑎)
𝑙1 𝑙2mergesort (𝑙2)
𝑙1 𝑙2merge (𝑙1, 𝑙2)
Merge Sort
from: https://www.algorithmist.com/index.php/Merge_sort
mergesort (𝑙1)
mergesort (𝑎)
𝑙1 𝑙2mergesort (𝑙2)
𝑙1 𝑙2merge (𝑙1, 𝑙2)
Merge Sort
𝑇 𝑛
𝑇𝑛
2
𝑇𝑛
2
Θ 𝑛
𝒏 > 𝟏 𝒏 = 𝟏
𝑇 𝑛
Θ 1
➔ 𝑇 𝑛 = ቐΘ 1
2𝑇𝑛
2+ Θ n if 𝒏 > 𝟏
if 𝒏 = 𝟏
Merge Sort
𝑇 𝑛 = ቐΘ 1
2𝑇𝑛
2+ Θ n if 𝒏 > 𝟏
if 𝒏 = 𝟏
𝑇 𝑛
Θ n ≈ cn
Merge Sort
𝑇 𝑛 = ቐΘ 1
2𝑇𝑛
2+ Θ n if 𝒏 > 𝟏
if 𝒏 = 𝟏
cn
Θ n ≈ cn
𝑇𝑛
2𝑇
𝑛
2
Merge Sort
𝑇 𝑛 = ቐΘ 1
2𝑇𝑛
2+ Θ n if 𝒏 > 𝟏
if 𝒏 = 𝟏
cn
Θ n ≈ cn
cn
2
𝑇𝑛
4𝑇
𝑛
4𝑇
𝑛
4𝑇
𝑛
4
cn
2
Merge Sort
𝑇 𝑛 = ቐΘ 1
2𝑇𝑛
2+ Θ n if 𝒏 > 𝟏
if 𝒏 = 𝟏
cn
Θ n ≈ cn
Θ 1
cn
2
cn
2
cn
4
cn
4
cn
4
cn
4
Merge Sort
𝑇 𝑛 = ቐΘ 1
2𝑇𝑛
2+ Θ n if 𝒏 > 𝟏
if 𝒏 = 𝟏
cn
Θ n ≈ cn
Θ 1
cn
2
cn
2
cn
4
cn
4
cn
4
cn
4
n
h = lnn
Merge Sort
𝑇 𝑛 = ቐΘ 1
2𝑇𝑛
2+ Θ n if 𝒏 > 𝟏
if 𝒏 = 𝟏
cn
Θ n ≈ cn
Θ 1
cn
2
cn
2
cn
4
cn
4
cn
4
cn
4
n
h = lnn
cn
cn
cn
Θ n
⋮
Total = Θ n ln n
Reference
• Charles Leiserson and Piotr Indyk, “Introduction to Algorithms”, September 29, 2004
• https://www.geeksforgeeks.org