Presentation is loading. Please wait.

Presentation is loading. Please wait.

Applications of Recursion

Similar presentations


Presentation on theme: "Applications of Recursion"— Presentation transcript:

1 Applications of Recursion
Copyright © 2006 Pearson Addison-Wesley. All rights reserved.

2 Applications of Recursion
Binary search Hanoi tower Copyright © 2006 Pearson Addison-Wesley. All rights reserved.

3 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.

4 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.

5 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.

6 Binary Search Demo (1) Algorithm maintains Ex. Binary search for 33
a[lo]  value  a[hi] Ex. Binary search for 33

7 Binary Search Demo (1) Algorithm maintains Ex. Binary search for 33
a[lo]  value  a[hi] Ex. Binary search for 33

8 Binary Search Demo (1) Algorithm maintains Ex. Binary search for 33
a[lo]  value  a[hi] Ex. Binary search for 33

9 Binary Search Demo (1) Algorithm maintains Ex. Binary search for 33.
a[lo]  value  a[hi] Ex. Binary search for 33.

10 Binary Search Demo (1) Algorithm maintains Ex. Binary search for 33
a[lo]  value  a[hi] Ex. Binary search for 33

11 Binary Search Demo (1) Algorithm maintains Ex. Binary search for 33
a[lo]  value  a[hi] Ex. Binary search for 33

12 Binary Search Demo (1) Algorithm maintains Ex. Binary search for 33
a[lo]  value  a[hi] Ex. Binary search for 33

13 Binary Search Demo (1) Algorithm maintains Ex. Binary search for 33
a[lo]  value  a[hi] Ex. Binary search for 33

14 Binary Search Demo (1) Algorithm maintains Ex. Binary search for 33
a[lo]  value  a[hi] Ex. Binary search for 33

15 Binary Search Demo (2) Algorithm maintains Ex. Binary search for 40
a[lo]  value  a[hi] Ex. Binary search for 40

16 Binary Search Demo (2) Algorithm maintains Ex. Binary search for 40
a[lo]  value  a[hi] Ex. Binary search for 40

17 Binary Search Demo (2) Algorithm maintains Ex. Binary search for 40
a[lo]  value  a[hi] Ex. Binary search for 40

18 Binary Search Demo (2) Algorithm maintains Ex. Binary search for 40
a[lo]  value  a[hi] Ex. Binary search for 40

19 Binary Search Demo (2) Algorithm maintains Ex. Binary search for 40
a[lo]  value  a[hi] Ex. Binary search for 40

20 Binary Search Demo (2) Algorithm maintains Ex. Binary search for 40
a[lo]  value  a[hi] Ex. Binary search for 40

21 Binary Search Demo (2) Algorithm maintains Ex. Binary search for 40
a[lo]  value  a[hi] Ex. Binary search for 40

22 Binary Search Demo (2) Algorithm maintains Ex. Binary search for 40
a[lo]  value  a[hi] Ex. Binary search for 40

23 Binary Search Demo (2) Algorithm maintains Ex. Binary search for 40
a[lo]  value  a[hi] Ex. Binary search for 40 terminate search (lo>hi)

24 C++ Solution (Iterative)

25 C++ Solution (recursive)

26 Complexity of Binary Search
O(Log2(n)) n log(n) 10 3 100 7 1,000 1,000,000 20 1,000,000,000 30 Copyright © 2006 Pearson Addison-Wesley. All rights reserved.

27 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.

28 Towers of Hanoi

29 Towers of Hanoi

30 Towers of Hanoi

31 Towers of Hanoi

32 Towers of Hanoi

33 Towers of Hanoi

34 Towers of Hanoi

35 Towers of Hanoi

36 Data Structure: Stack void Push(element) element Pop()
Copyright © 2006 Pearson Addison-Wesley. All rights reserved.

37 Stack: Animation Copyright © 2006 Pearson Addison-Wesley. All rights reserved.

38 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); hanoi(N-1,middle, left, right);

39 Is the End of the World Approaching?
Problem complexity 2n 64 gold discs Given 1 move a second  600,000,000,000 years until the end of the world 

40 Online-Animation


Download ppt "Applications of Recursion"

Similar presentations


Ads by Google