1 / 18

COMP 171 Data Structures and Algorithms

COMP 171 Data Structures and Algorithms. Tutorial 2 Analysis of algorithms. Ο-notation. Big-Oh f(n) =Ο(g(n)) Ο(g(n)) = {f(n) : there exist positive constants c and n 0 such that 0≦f(n)≦cg(n) for all n≧n 0 } Upper bound Worst-case running time. ο-notation. Little-Oh f(n) =ο(g(n))

leediamond
Download Presentation

COMP 171 Data Structures and Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. COMP 171Data Structures and Algorithms Tutorial 2 Analysis of algorithms

  2. Ο-notation • Big-Oh • f(n) =Ο(g(n)) • Ο(g(n)) = {f(n) : there exist positive constants c and n0 such that 0≦f(n)≦cg(n) for all n≧n0} • Upper bound • Worst-case running time

  3. ο-notation • Little-Oh • f(n) =ο(g(n)) • ο(g(n)) = {f(n) : for any positive constants c and n0 such that 0≦f(n)<cg(n) for all n≧n0} • Non-tight upper bound

  4. Ω-notation • Big-Omega • f(n) =Ω(g(n)) • Ω(g(n)) = {f(n) : there exist positive constants c and n0 such that 0 ≦cg(n)≦f(n) for all n≧n0} • Lower bound • Best-case running time

  5. ω-notation • Little-Omega • f(n) = ω(g(n)) • ω(g(n)) = {f(n) : for any positive constants c and n0 such that 0 ≦cg(n)<f(n) for all n≧n0} • Non-tight lower bound

  6. Θ-notation • Theta • f(n) =Θ(g(n)) • Θ(g(n)) = {f(n) : there exist positive constants c1, c2 and n0 such that 0≦c1g(n)≦f(n)≦c2g(n) for all n≧n0} • Tight bound

  7. Summary

  8. Transitivity • f(n)=Θ(g(n)), g(n)=Θ(h(n)) →f(n)=Θ(h(n)) • f(n)=Ο(g(n)), g(n)=Ο(h(n)) →f(n)=Ο(h(n)) • f(n)=Ω(g(n)), g(n)=Ω(h(n)) →f(n)=Ω(h(n)) • f(n)=ο(g(n)), g(n)=ο(h(n)) →f(n)=ο(h(n)) • f(n)=ω(g(n)), g(n)=ω(h(n)) →f(n)=ω(h(n))

  9. Reflexivity, Symmetry & Transpose Symmetry • f(n)=Θ(f(n)) • f(n)=Ο(f(n)) • f(n)=Ω(f(n)) • f(n)=Θ(g(n)) if and only if g(n)=Θ(f(n)) • f(n)=Ο(g(n)) if and only if g(n)=Ω(f(n)) • f(n)=ο(g(n)) if and only if g(n)=ω(f(n))

  10. Selection Sort • Input: Array A of Size n • Output: A sorted array A • Algorithm: Find the smallest element of A and exchanging it with the element in A[1]. Then find the second smallest element of A and exchange it with A[2]. Continue for the first n-1 elements in A.

  11. e.g. {5, 2, 4, 7, 3} • Input: {5, 2, 4, 7, 3} • 1st iteration: {2, 5, 4, 7, 3} • 2nd iteration: {2, 3, 4, 7, 5} • 3rd iteration: {2, 3, 4, 7, 5} • 4th iteration: {2, 3, 4, 5, 7} • Output: {2, 3, 4, 5, 7}

  12. Sorted Part Unsorted Part • 1: Find the smallest(m) in the unsorted part • 2: Swap with h • 3: Put m into the sorted part • 4: Back to 1 until unsorted part is size 1 h m m h m

  13. for i ← range 1 min = value min_pos = value for j ← range 2 find min end for j swap(value, value) end for i

  14. for i ← 1 to n-1 min = infinity min_pos = 0 for j ← i to n if A[j] < min then min = A[j] min_pos = j end if end for j swap(A[i], A[min_pos]) end for i

  15. for i ← 1 to n-1 min = infinity min_pos = 0 for j ← i to n if A[j] < min then min = A[j] min_pos = j end if end for j swap(A[i], A[min_pos]) end for i O(1) O(1) O(n) O(n) O(1)

  16. Ο(n2) • Ω(n2)? • Θ(n2)? • In class exercise: • Improve the algorithm so it can achieve: • Ο(n2) • Ω(n) • Given a sorted input sequence, which sorting algorithm(s) can achieve Ω(n)?

  17. Binary Search ….. ….. ….. ….. ….. …..

  18. If tree height is k • The number of elements is 2k+1-1=n • The number of comparison is at most k+1 • k+1 = log22k+1 =log2 (n+1 ) • Ο(㏒ n)

More Related