Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

23
Insertion Sort Merge Sort SWE2016-44

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

Page 1: 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

Page 2: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Insertion Sort

Page 3: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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

Page 4: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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

Page 5: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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

Page 6: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge two sorted arrays

Page 7: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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

Page 8: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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

Page 9: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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

Page 10: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge Sort

from: https://www.algorithmist.com/index.php/Merge_sort

Page 11: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge Sort

from: https://www.algorithmist.com/index.php/Merge_sort

mergesort (𝑙1)

mergesort (𝑎)

𝑙1 𝑙2mergesort (𝑙2)

Page 12: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge Sort

from: https://www.algorithmist.com/index.php/Merge_sort

mergesort (𝑙1)

mergesort (𝑎)

𝑙1 𝑙2mergesort (𝑙2) mergesort (𝑙1)

mergesort (𝑎)

𝑙1 𝑙2mergesort (𝑙2)

Page 13: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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

Page 14: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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)

Page 15: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge Sort

from: https://www.algorithmist.com/index.php/Merge_sort

mergesort (𝑙1)

mergesort (𝑎)

𝑙1 𝑙2mergesort (𝑙2)

𝑙1 𝑙2merge (𝑙1, 𝑙2)

Page 16: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge Sort

𝑇 𝑛

𝑇𝑛

2

𝑇𝑛

2

Θ 𝑛

𝒏 > 𝟏 𝒏 = 𝟏

𝑇 𝑛

Θ 1

➔ 𝑇 𝑛 = ቐΘ 1

2𝑇𝑛

2+ Θ n if 𝒏 > 𝟏

if 𝒏 = 𝟏

Page 17: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge Sort

𝑇 𝑛 = ቐΘ 1

2𝑇𝑛

2+ Θ n if 𝒏 > 𝟏

if 𝒏 = 𝟏

𝑇 𝑛

Θ n ≈ cn

Page 18: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge Sort

𝑇 𝑛 = ቐΘ 1

2𝑇𝑛

2+ Θ n if 𝒏 > 𝟏

if 𝒏 = 𝟏

cn

Θ n ≈ cn

𝑇𝑛

2𝑇

𝑛

2

Page 19: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge Sort

𝑇 𝑛 = ቐΘ 1

2𝑇𝑛

2+ Θ n if 𝒏 > 𝟏

if 𝒏 = 𝟏

cn

Θ n ≈ cn

cn

2

𝑇𝑛

4𝑇

𝑛

4𝑇

𝑛

4𝑇

𝑛

4

cn

2

Page 20: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Merge Sort

𝑇 𝑛 = ቐΘ 1

2𝑇𝑛

2+ Θ n if 𝒏 > 𝟏

if 𝒏 = 𝟏

cn

Θ n ≈ cn

Θ 1

cn

2

cn

2

cn

4

cn

4

cn

4

cn

4

Page 21: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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

Page 22: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

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

Page 23: Insertion Sort Merge Sort · Merge two sorted arrays MERGE (A, B, m, n) T(m, n) i=1, j=1 1 while i

Reference

• Charles Leiserson and Piotr Indyk, “Introduction to Algorithms”, September 29, 2004

• https://www.geeksforgeeks.org