#include #include using namespace std; int findInArray(int* data, int size, int position, int valueToSearchFor) { cout << "findInArray(size = " << size << ", position = " << position << ")" << endl; if (position == size) return -1; else if (valueToSearchFor == data[position]) return position; else return findInArray(data, size, position+1, valueToSearchFor); } int findInArray(int* data, int size, int valueToSearchFor) { return findInArray(data, size, 0, valueToSearchFor); } int binarySearch(int* array, int first, int last, int valueToSearchFor) { cout << "binarySearch(first = " << first << ", last = " << last << ")" << endl; if (first > last) return -1; else { int middle; middle = (first + last) / 2; if (valueToSearchFor == array[middle]) return middle; else if (valueToSearchFor < array[middle]) return binarySearch(array, first, middle-1, valueToSearchFor); else return binarySearch(array, middle+1, last, valueToSearchFor); } } int binarySearch(int* array, int size, int valueToSearchFor) { return binarySearch(array, 0, size-1, valueToSearchFor); } int binarySearchIterative(int* array, int size, int valueToSearchFor) { int first, last, middle; first = 0; last = size - 1; while (first <= last) { cout << "binarySearchIterative(first = " << first << ", last = " << last << ")" << endl; middle = (first + last) / 2; if (valueToSearchFor == array[middle]) return middle; else if (valueToSearchFor < array[middle]) last = middle - 1; else first = middle + 1; } cout << "binarySearchIterative(first = " << first << ", last = " << last << ")" << endl; return -1; } int main(int argc, char* argv[]) { string arrayFileName; int value; int size; int* data; int i; cout << "Enter array filename: " << endl; cin >> arrayFileName; cout << "Enter item to search for: " << endl; cin >> value; // read data ifstream inputStream; inputStream.open(arrayFileName.c_str()); inputStream >> size; data = new int[size]; for (i = 0; i < size; i++) { inputStream >> data[i]; } inputStream.close(); // regular search cout << findInArray(data, size, value) << endl; // binary search cout << binarySearch(data, size, value) << endl; // binary search iterative cout << binarySearchIterative(data, size, value) << endl; }