Java Reference
In-Depth Information
Display 11.9
Iterative Version of Binary Search
1 /**
2 Searches the array a for key. If key is not in the array segment, then
3 - 1 is returned. Otherwise returns an index in the segment such that key
== a[index].
4 Precondition: a [lowEnd] <= a[lowEnd + 1]<= <= a[highEnd]
5 */
6 public static int search( int [] a, int lowEnd, int highEnd, int key)
7 {
8 int first = lowEnd;
9 int last = highEnd;
10 int mid;
11 boolean found = false ; //so far
12 int result = 0; //to keep compiler happy
13 while ( (first <= last) && !(found) )
14 {
15 mid = (first + last)/2;
16 if (key == a[mid])
17 {
18 found = true ;
19 result = mid;
20 }
21 else if (key < a[mid])
22 {
23 last = mid - 1;
24 }
25 else if (key > a[mid])
26 {
27 first = mid + 1;
28 }
29 }
30 if (first > last)
31 result = -1;
32 return result;
33 }
illustrates, it often makes sense to derive a recursive algorithm even if you expect
to later convert it to an iterative algorithm. You can see the iterative method from
Display 11.9 embedded in a full demonstration in the files IterativeBinarySearch.
java and IterativeBinarySearchDemo.java on the accompanying website.
extra code
on website
 
Search WWH ::




Custom Search