comp 171 data structures and algorithms tutorial 3 merge sort & quick sort

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

Upload: philomena-osborne

Post on 02-Jan-2016

214 views

Category:

Documents


1 download

TRANSCRIPT

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

COMP 171Data Structures and Algorithms

Tutorial 3

Merge Sort & Quick Sort

Page 2: COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort

Merge Sort

mergesort(A, left, right)

if left < right then

middle ← (left + right) / 2mergesort(A, left, middle)

mergesort(A, middle+1, right)

merge(A, left, middle+1, right)

end if

end mergesort

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

merge(A, p, q, r)

n1 ← q – p

n2 ← r – q + 1

create array L[1..n1+1], R[1..n2+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[n1+1] ← R[n2+1] ← ∞ I ← j ← 1for k ← p to r

if L[I] < R[j] thenA[k] ← L[i]i ← i + 1

elseA[k] ← R[j]j ← j + 1

end ifend for k

end merge

Page 4: COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort

• 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)

Page 5: COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort

• 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

Page 6: COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort

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

Page 7: COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort

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

Page 8: COMP 171 Data Structures and Algorithms Tutorial 3 Merge Sort & Quick Sort

• Advantage:– No extra memory is needed– Fast running time (in average)

• Disadvantage:– Unstable in running time

• Finding “pivot” element is a big issue!