Hi, If anyone could help me with where I've gone wrong with the linear search below it would be greatly appreciated.
Code:#include <iostream> #include <vector> using namespace std; void binarySearch(const vector<int> &numbers, int value); void linearSearch(const vector<int> &numbers, int value); int main() { vector<int> numbers; for (int i=0; i<16; i++) numbers.push_back(i); cout << "Searching for -1 in numbers using linear search\n"; linearSearch(numbers, -1); cout << "Searching for -1 in numbers using binary search\n"; binarySearch(numbers, -1); cout << "\nSearching for 0 in numbers using linear search\n"; linearSearch(numbers, 0); cout << "Searching for 0 in numbers using binary search\n"; binarySearch(numbers, 0); cout << "\nSearching for 7 in numbers using linear search\n"; linearSearch(numbers, 7); cout << "Searching for 7 in numbers using binary search\n"; binarySearch(numbers, 7); cout << "\nSearching for 11 in numbers using linear search\n"; linearSearch(numbers, 11); cout << "Searching for 11 in numbers using binary search\n"; binarySearch(numbers, 11); cout << "\nSearching for 15 in numbers using linear search\n"; linearSearch(numbers, 15); cout << "Searching for 15 in numbers using binary search\n"; binarySearch(numbers, 15); cout << "\nSearching for 22 in numbers using linear search\n"; linearSearch(numbers, 22); cout << "Searching for 22 in numbers using binary search\n"; binarySearch(numbers, 22); return 0; } void binarySearch(const vector<int> &numbers, int value) { int step = 1, left = 0, right = numbers.size()-1, mid; while (left <= right) { mid = (left + right) / 2; if (numbers[mid] == value) { cout << "Number found after " << step << " steps\n"; return; } else if (numbers[mid] < value) left = mid+1; else right = mid-1; step++; } cout << "Number not found after " << step << " steps\n"; } void linearSearch(const vector<int> &numbers, int value) { // use linear seach to find value in numbers // print the number of steps it takes to find, or not find, value int step = 1; int index; int length = numbers.size(); for (index = 0; index < length; index++) { if (numbers[index] == value) { cout << "Number found after " << step << " steps\n"; } step++; } cout << "Number not found afer " << step << " steps\n"; }



LinkBack URL
About LinkBacks


