#include <iostream>
#include <cstring>
#include "timer.h"
using namespace std;
extern "C" int binarySearch(int * arr, int left, int right, int target);
int main(int argc, char** argv) {
// Check if silent cmd line param was passed in
// This is used for autograding purposes but can be ignored otherwise
bool print = true;
if (argc > 1) {
string opt = "-s";
print = (strcmp(opt.c_str(), argv[1]) != 0);
}
// prompt for array size
int size;
if (print)
cout << "Enter the array size: ";
cin >> size;
int * arr = new int[size];
// read in array values
for(int i = 0; i < size; i++) {
if(print)
cout << "Enter value " << i << ": ";
cin >> arr[i];
}
// prompt for target
int target;
if(print)
cout << "Enter target to search for: ";
cin >> target;
int ind = binarySearch(arr, 0, size-1, target);
if (ind > -1)
cout << "\nFound " << target << " at index " << ind << endl;
else
cout << "\nDid not find " << target << endl;
// timing tests
timer t;
t.start();
for(int i = 0; i < 1000; i++) {
binarySearch(arr, 0, size-1, target);
}
t.stop();
cout << "Took " << t.getTime()*1000 << "ms" << endl;
return 0;
}