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

Post on 15-Mar-2020

18 views 0 download

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