The Binary search requires an ordered list.
Iterative Algorithm
int find (ArrayList list, Double target); // Iterative binary search will return the index of the target element, else list length { Boolean found = false; int mid; int first = 0; int last = list.size( ) - 1; while (first <= last && !found) { mid = (first + last) / 2; if (list.get(mid).equals(target)) found = true; else if (list.get(mid) > target) last = mid - 1; else first = mid + 1; } if (found) return mid; return -1; }
Recursive Algorithm
int Find (ArrayList list, Double target, Double first, Double last) // Recursive binary search will return the index of the target element, else list length { int mid; if (first > last) return -1; mid = (first + last) / 2; if (list.get(mid).equals(target)) return mid; if (list.get(mid) < target) return find(list, target, mid+1, last); return find(list, target, first, mid-1); }