APPLICATIONS OF RECURSION Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 17-1
Applications of Recursion Binary search Hanoi tower Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 17-2
Binary Search Given an array A, search for a specific element Linear search for(int i=0; i<size; i++) { if(A[i]….) { …. } Time complexity: O(n) Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 17-3
Binary Search (continued) Linear search is used for unsorted array For sorted array, we can use binary search Given array A[0..size] A[0] ≤ A[1] ≤ A[2] ≤ A[3] ≤ … ≤ A[size] Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 17-4
Binary Search Algorithm To search A[lo] through A[hi] do the following found = false; mid = approximate midpoint between lo and hi If(key==a[mid]) found = true; else if(key<A[mid]) { search A[lo] through A[mid-1]; } else // key > A[mid] { Search A[mid+1] through A[hi] } Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 17-5
Binary Search Demo (1) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 33
Binary Search Demo (1) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 33
Binary Search Demo (1) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 33
Binary Search Demo (1) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 33.
Binary Search Demo (1) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 33
Binary Search Demo (1) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 33
Binary Search Demo (1) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 33
Binary Search Demo (1) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 33
Binary Search Demo (1) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 33
Binary Search Demo (2) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 40
Binary Search Demo (2) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 40
Binary Search Demo (2) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 40
Binary Search Demo (2) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 40
Binary Search Demo (2) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 40
Binary Search Demo (2) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 40
Binary Search Demo (2) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 40
Binary Search Demo (2) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 40
Binary Search Demo (2) Algorithm maintains a[lo] value a[hi] Ex. Binary search for 40 terminate search (lo>hi)
Complexity of Binary Search O(Log 2 (n)) Copyright © 2006 Pearson Addison-Wesley. All rights reserved nlog(n) , ,000, ,000,000,00030
The Towers of Hanoi A Stack-based Application GIVEN: three poles and a set of discs on the first pole, discs of different sizes, the smallest discs at the top GOAL: move all the discs from the left pole to the right one. CONDITIONS Only one disc may be moved at a time. A disc can be placed either on an empty pole or on top of a larger disc.
Towers of Hanoi
Data Structure: Stack void Push(element) element Pop() Copyright © 2006 Pearson Addison-Wesley. All rights reserved
Stack: Animation dan/dsal/StackAppl.html dan/dsal/StackAppl.html Copyright © 2006 Pearson Addison-Wesley. All rights reserved
Recursive Solution void hanoi (int N, Stack left, Stack middle, Stack right) { int value; if( N == 1) { value = left.pop(); right.push(value); } else { hanoi(N-1, left, right, middle); value = left.pop(); right.push(value); hanoi(N-1,middle, left, right); }
Is the End of the World Approaching? Problem complexity 2 n 64 gold discs Given 1 move a second 600,000,000,000 years until the end of the world
Online-Animation knot.org/recurrence/hanoi.shtml knot.org/recurrence/hanoi.shtml 38