//Andrew Alspaugh CS1A Chapter 8. P. 488. #8.
/****************************************************************************
Compare Effieciency of Search Methods
_____________________________________________________________________________
This Program Searches for an integer in two parallel in two different methods
linear and binary searches
The program then determines how many comparisons each search method had
_____________________________________________________________________________
//DATA DICTIONARY
//Set up Arrays
const int SIZE = 20;
int Array1[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
int Array2[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
//User Input
int searchFor;
//Linear Search
int i = 0;
bool found1 = false;
int searches1 = 0;
//Bubble Sort
bool swap;
int temp;
//Binary Search
int first = 0;
int last = SIZE - 1;
int middle;
int searches2 = 0;
bool found2 = false;
*****************************************************************************/
#include <iostream>
using namespace std;
int main()
{
//DATA DICTIONARY
//Set up Arrays
const int SIZE = 20;
int Array1[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
int Array2[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
//User Input
int searchFor;
//Linear Search
int i = 0;
bool found1 = false;
int searches1 = 0;
//Bubble Sort
bool swap;
int temp;
//Binary Search
int first = 0;
int last = SIZE - 1;
int middle;
int searches2 = 0;
bool found2 = false;
//INPUT
cout << "Enter Integer To Search Arrays For:" << endl;
cin >> searchFor;
//PROCESS
//Linear Search // Array1
while(i < SIZE && !found1)
{
searches1++;
if (Array1[i] == searchFor)
found1 = true;
i++;
}
//Bubble Sort // Array2
do
{
swap = false;
for (int count = 0; count < (SIZE - 1); count++)
{
if(Array2[count] > Array2[count + 1])
{
temp = Array2[count];
Array2[count] = Array2[count + 1];
Array2[count + 1] = temp;
swap = true;
}
}
} while(swap);
//Binary Search // Array2
while(!found2 && first <= last)
{
searches2++;
middle = (first + last) / 2;
if (Array2[middle] == searchFor)
found2 = true;
else if (Array2[middle] > searchFor)
last = middle - 1;
else
first = middle + 1;
}
//OUTPUT
//Linear Searches Comparisons:
if (found1)
cout << "Linear Search Had " << searches1 << " Comparisons." << endl;
else
cout << "Interger Not Found in Array" << endl;
//Binary Searches Comparisons;
if (found2)
cout << "Binary Search Had " << searches2 << " Comparisons." << endl;
return 0;
}
Ly9BbmRyZXcgQWxzcGF1Z2ggICAgICAgICAgICAgICAgQ1MxQSAgICAgICAgICAgICAgICAgICAgIENoYXB0ZXIgOC4gUC4gNDg4LiAjOC4KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkNvbXBhcmUgRWZmaWVjaWVuY3kgb2YgU2VhcmNoIE1ldGhvZHMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVGhpcyBQcm9ncmFtIFNlYXJjaGVzIGZvciBhbiBpbnRlZ2VyIGluIHR3byBwYXJhbGxlbCBpbiB0d28gZGlmZmVyZW50IG1ldGhvZHMKbGluZWFyIGFuZCBiaW5hcnkgc2VhcmNoZXMKClRoZSBwcm9ncmFtIHRoZW4gZGV0ZXJtaW5lcyBob3cgbWFueSBjb21wYXJpc29ucyBlYWNoIHNlYXJjaCBtZXRob2QgaGFkCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCi8vREFUQSBESUNUSU9OQVJZCgkvL1NldCB1cCBBcnJheXMKCWNvbnN0IGludCBTSVpFID0gMjA7CglpbnQgQXJyYXkxW1NJWkVdID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMH07CglpbnQgQXJyYXkyW1NJWkVdID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMH07CgkKCS8vVXNlciBJbnB1dAoJaW50IHNlYXJjaEZvcjsKCQoJLy9MaW5lYXIgU2VhcmNoCglpbnQgaSA9IDA7Cglib29sIGZvdW5kMSA9IGZhbHNlOwoJaW50IHNlYXJjaGVzMSA9IDA7CgkKCS8vQnViYmxlIFNvcnQKCWJvb2wgc3dhcDsKCWludCB0ZW1wOwoJCgkvL0JpbmFyeSBTZWFyY2gKCWludCBmaXJzdCA9IDA7CglpbnQgbGFzdCA9IFNJWkUgLSAxOwoJaW50IG1pZGRsZTsKCWludCBzZWFyY2hlczIgPSAwOwoJYm9vbCBmb3VuZDIgPSBmYWxzZTsKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgCnsKLy9EQVRBIERJQ1RJT05BUlkKCS8vU2V0IHVwIEFycmF5cwoJY29uc3QgaW50IFNJWkUgPSAyMDsKCWludCBBcnJheTFbU0laRV0gPSB7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwfTsKCWludCBBcnJheTJbU0laRV0gPSB7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwfTsKCQoJLy9Vc2VyIElucHV0CglpbnQgc2VhcmNoRm9yOwoJCgkvL0xpbmVhciBTZWFyY2gKCWludCBpID0gMDsKCWJvb2wgZm91bmQxID0gZmFsc2U7CglpbnQgc2VhcmNoZXMxID0gMDsKCQoJLy9CdWJibGUgU29ydAoJYm9vbCBzd2FwOwoJaW50IHRlbXA7CgkKCS8vQmluYXJ5IFNlYXJjaAoJaW50IGZpcnN0ID0gMDsKCWludCBsYXN0ID0gU0laRSAtIDE7CglpbnQgbWlkZGxlOwoJaW50IHNlYXJjaGVzMiA9IDA7Cglib29sIGZvdW5kMiA9IGZhbHNlOwoKLy9JTlBVVAoJY291dCA8PCAiRW50ZXIgSW50ZWdlciBUbyBTZWFyY2ggQXJyYXlzIEZvcjoiIDw8IGVuZGw7CgljaW4gPj4gc2VhcmNoRm9yOwoKCQovL1BST0NFU1MKCS8vTGluZWFyIFNlYXJjaCAvLyBBcnJheTEKCXdoaWxlKGkgPCBTSVpFICYmICFmb3VuZDEpCgl7CgkJc2VhcmNoZXMxKys7CgkJCgkJaWYgKEFycmF5MVtpXSA9PSBzZWFyY2hGb3IpCgkJCWZvdW5kMSA9IHRydWU7CgkJCQoJCWkrKzsKCX0KCQoJLy9CdWJibGUgU29ydCAvLyBBcnJheTIKCWRvCgl7CgkJc3dhcCA9IGZhbHNlOwoJCWZvciAoaW50IGNvdW50ID0gMDsgY291bnQgPCAoU0laRSAtIDEpOyBjb3VudCsrKQoJCXsKCQkJaWYoQXJyYXkyW2NvdW50XSA+IEFycmF5Mltjb3VudCArIDFdKQoJCQl7CgkJCQl0ZW1wID0gQXJyYXkyW2NvdW50XTsKCQkJCUFycmF5Mltjb3VudF0gPSBBcnJheTJbY291bnQgKyAxXTsKCQkJCUFycmF5Mltjb3VudCArIDFdID0gdGVtcDsKCQkJCXN3YXAgPSB0cnVlOwoJCQl9CgkJfQoJfSB3aGlsZShzd2FwKTsKCQoJLy9CaW5hcnkgU2VhcmNoIC8vIEFycmF5MgoJd2hpbGUoIWZvdW5kMiAmJiBmaXJzdCA8PSBsYXN0KQoJewoJCXNlYXJjaGVzMisrOwoJCQoJCW1pZGRsZSA9IChmaXJzdCArIGxhc3QpIC8gMjsKCQkKCQlpZiAoQXJyYXkyW21pZGRsZV0gPT0gc2VhcmNoRm9yKQoJCQlmb3VuZDIgPSB0cnVlOwoJCWVsc2UgaWYgKEFycmF5MlttaWRkbGVdID4gc2VhcmNoRm9yKQoJCQlsYXN0ID0gbWlkZGxlIC0gMTsKCQllbHNlCgkJCWZpcnN0ID0gbWlkZGxlICsgMTsKCX0KCQovL09VVFBVVAoKCS8vTGluZWFyIFNlYXJjaGVzIENvbXBhcmlzb25zOgoJaWYgKGZvdW5kMSkKCQljb3V0IDw8ICJMaW5lYXIgU2VhcmNoIEhhZCAiIDw8IHNlYXJjaGVzMSA8PCAiIENvbXBhcmlzb25zLiIgPDwgZW5kbDsKCWVsc2UKCQljb3V0IDw8ICJJbnRlcmdlciBOb3QgRm91bmQgaW4gQXJyYXkiIDw8IGVuZGw7CgkKCS8vQmluYXJ5IFNlYXJjaGVzIENvbXBhcmlzb25zOwoJaWYgKGZvdW5kMikKCQljb3V0IDw8ICJCaW5hcnkgU2VhcmNoIEhhZCAiIDw8IHNlYXJjaGVzMiA8PCAiIENvbXBhcmlzb25zLiIgPDwgZW5kbDsKCQoJcmV0dXJuIDA7Cn0=