14
Design and Analysis of Algorithms ات ي م ازز و خ ل ا ل ي ل ح ت و م ي م ص ت( 311 ) ل ا عChapter 2 Sorting (insertion Sort, Merge Sort)

Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

Embed Size (px)

DESCRIPTION

 3 An Example: Insertion Sort InsertionSort(A, n) { for i = 2 to n { key = A[i]next key j = i - 1;go left while (j > 0) and (A[j] > key) {find place for key A[j+1] = A[j]shift sorted right j = j – 1go left } A[j+1] = keyput key in place }

Citation preview

Page 1: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

Design and Analysis of Algorithms

الخوارزميات وتحليل تصميم(311) عال

Chapter 2Sorting (insertion Sort, Merge Sort)

Page 2: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

2

9 7 6 15 16 5 10 11

Insertion Sort Execution Example

9 7 6 15 16 5 10 11

7 9 6 15 16 5 10 11

6 7 9 15 16 5 10 11

6 7 9 15 16 5 10 11

6 7 9 15 16 5 10 11

5 6 7 9 15 16 10 11

5 6 7 9 10 15 16 11

5 6 7 9 10 11 15 16

Page 3: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

3

An Example: Insertion Sort

InsertionSort(A, n) {for i = 2 to n {key = A[i] next keyj = i - 1; go leftwhile (j > 0) and (A[j] > key) { find place for key A[j+1] = A[j] shift sorted right j = j – 1 go left}A[j+1] = key put key in place

}}

Page 4: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

4

An Example: Insertion Sort

InsertionSort(A, n) {for i = 2 to n {key = A[i]j = i - 1;while (j > 0) and (A[j] > key) {A[j+1] = A[j]j = j - 1}A[j+1] = key}

}

30 10 40 20

1 2 3 4

i = j = key = A[j] = A[j+1] =

Page 5: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

5

An Example: Insertion Sort

InsertionSort(A, n) {for i = 2 to n {key = A[i]j = i - 1;while (j > 0) and (A[j] > key) {A[j+1] = A[j]j = j - 1}A[j+1] = key}

}

10 20 30 40

1 2 3 4

i = 4 j = 1 key = 20A[j] = 10 A[j+1] = 20

Done!

Page 6: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

6

Insertion Sort

InsertionSort(A, n) {for i = 2 to n {

key = A[i]j = i - 1;while (j > 0) and (A[j] > key) {

A[j+1] = A[j]j = j - 1

}A[j+1] = key

}}

How many times will this while loop execute?

Page 7: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

7

Analysis of Insertion Sort

• Best Case If A is sorted: O(n) comparisons

• Worst Case If A is reversed sorted: O(n2) comparisons

• Average Case If A is randomly sorted: O(n2) comparisons

Page 8: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

8

Divide-and-Conquer

• Recursive in structure Divide the problem into several smaller sub-

problems that are similar to the original but smaller in size

Conquer the sub-problems by solving them recursively. If they are small enough, just solve them in a straightforward manner.

Combine the solutions to create a solution to the original problem

Page 9: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

9

An Example: Merge Sort

• Divide: Divide the n-element sequence to be sorted into two subsequences of n/2 elements each

• Conquer: Sort the two subsequences recursively using merge sort.

• Combine: Merge the two sorted subsequences to produce the sorted answer.

Page 10: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

10

Merge Sort

MergeSort(A, left, right) {if (left < right) {

mid = floor((left + right) / 2);MergeSort(A, left, mid);MergeSort(A, mid+1, right);Merge(A, left, mid, right);

}}

// Merge() takes two sorted subarrays of A and// merges them into a single sorted subarray of A.// It requires O(n) time

Page 11: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

11

Merge Sort Revisited

• To sort n numbers if n = 1 done! recursively sort 2 lists of

numbers n/2 and n/2 elements merge 2 sorted lists in O(n) time

• Strategy break problem into similar

(smaller) subproblems recursively solve subproblems combine solutions to answer

Page 12: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

12

Merge Sort

[8, 3, 13, 6, 2, 14, 5, 9, 10, 1, 7, 12, 4]

[8, 3, 13, 6, 2, 14, 5] [9, 10, 1, 7, 12, 4]

[8, 3, 13, 6] [2, 14, 5]

[8, 3]

[13, 6]

[8] [3] [13] [6]

[2, 14] [5]

[2] [14]

[9, 10, 1]

[7, 12, 4]

[9, 10] [1]

[9] [10]

[7, 12] [4]

[7] [12]

Page 13: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

13

Merge Sort

[3, 8]

[6, 13]

[3, 6, 8, 13]

[8] [3] [13] [6]

[2, 14]

[2, 5, 14]

[2, 3, 5, 6, 8, 13, 14]

[5]

[2] [14]

[9, 10]

[1, 9, 10]

[1]

[9] [10]

[7, 12]

[4, 7, 12]

[1, 4, 7, 9, 10,12]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13,14]

[4]

[7] [12]

Page 14: Design and Analysis of Algorithms تصميم وتحليل الخوارزميات (311 عال) Chapter 2 Sorting (insertion Sort, Merge Sort)

14

Analysis of Merge Sort

• Divide: computing the middle takes O(1) • Conquer: solving 2 sub-problem takes 2T(n/2) • Combine: merging n-element takes O(n) • Total:

T(n) = O(1) if n = 1T(n) = 2T(n/2) + O(n) + O(1) if n > 1

T(n) = O(n log n)

Merge sort is Solved by a recurrence.