Presentation is loading. Please wait.

Presentation is loading. Please wait.

COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort.

Similar presentations


Presentation on theme: "COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort."— Presentation transcript:

1 COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort

2 Merge Sort mergesort(A, left, right) if left < right then middle ←  (left + right) / 2  mergesort(A, left, middle) mergesort(A, middle+1, right) merge(A, left, middle+1, right) end if end mergesort

3 merge(A, p, q, r) n 1 ← q – p n 2 ← r – q + 1 create array L[1..n 1 +1], R[1..n 2 +1] for i ← 1 to n1 do L[i] ← A[p+i-1] for j ← 1 to n2 do R[j] ← A[q+j-1] L[n 1 +1] ← R[n 2 +1] ← ∞ I ← j ← 1 for k ← p to r if L[I] < R[j] then A[k] ← L[i] i ← i + 1 else A[k] ← R[j] j ← j + 1 end if end for k end merge

4 Assume mergesort(A, left, right) takes T(n) to run where n = right – left + 1 = no. of elements in array A[left..right] T(1) = O(1) –If array size = 1, nothing need to be done T(n) = divide + conquer + combine = O(1) + 2T(n/2) + O(n) T(1) = O(1) T(n) = 2T(n/2) + O(n)

5 Best Case: Ω(n ㏒ n) Worst Case: Ο(n ㏒ n) Running Time: Θ(n ㏒ n) Advantage –Stable running time –Fast running time Disadvantage – Need extra memory space for merge step

6 Quick Sort quicksort(A, left, right) if left < right then middle ← partition(A, left, right) quicksort(A, left, middle–1 ) quicksort(A, middle+1, right) end if end quicksort

7 partition(A, left, right) x ← A[right] i ← left – 1 for j ← left to right – 1 if A[j] < x then i ← i + 1 swap(A[i], A[j]) end if end for j swap(A[i+1], A[right]) return i + 1 end partition

8 Advantage: –No extra memory is needed –Fast running time (in average) Disadvantage: –Unstable in running time Finding “pivot” element is a big issue!


Download ppt "COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort."

Similar presentations


Ads by Google