Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.