#include <iostream>
#include <algorithm>
using namespace std;
const int SIZE = 20;
int linearSearch(int arr[], int value, int& comparisons) {
for (int i = 0; i < SIZE; ++i) {
comparisons++;
if (arr[i] == value) {
return i;
}
}
return -1;
}
int binarySearch(int arr[], int value, int& comparisons) {
int low = 0, high = SIZE - 1;
while (low <= high) {
int mid = (low + high) / 2;
comparisons++;
if (arr[mid] == value) {
return mid;
} else if (arr[mid] < value) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
int main() {
int arr[SIZE] = {12, 23, 95, 45, 123, 67, 24, 63, 90, 101,
21, 999, 99, 42, 666, 777, 878, 989, 154, 2024};
int value;
cout << "Enter a value to search for: " << endl;
cin >> value;
int linearComparisons = 0, binaryComparisons = 0;
int linearIndex = linearSearch(arr, value, linearComparisons);
if (linearIndex != -1)
{
cout << "Linear Search: location " << linearIndex << ", comparisons: " << linearComparisons << endl;
}
else
{
cout << "Linear Search: Number not found, comparisons: " << linearComparisons << endl;
}
sort(arr, arr + SIZE);
int binaryIndex = binarySearch(arr, value, binaryComparisons);
if (binaryIndex != -1)
{
cout << "Binary Search: location " << binaryIndex << ", comparisons: " << binaryComparisons << endl;
}
else
{
cout << "Binary Search: Number not found, comparisons: " << binaryComparisons << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgU0laRSA9IDIwOwppbnQgbGluZWFyU2VhcmNoKGludCBhcnJbXSwgaW50IHZhbHVlLCBpbnQmIGNvbXBhcmlzb25zKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IFNJWkU7ICsraSkgewogICAgICAgIGNvbXBhcmlzb25zKys7CiAgICAgICAgaWYgKGFycltpXSA9PSB2YWx1ZSkgewogICAgICAgICAgICByZXR1cm4gaTsgCiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIC0xOyAKfQoKaW50IGJpbmFyeVNlYXJjaChpbnQgYXJyW10sIGludCB2YWx1ZSwgaW50JiBjb21wYXJpc29ucykgewogICAgaW50IGxvdyA9IDAsIGhpZ2ggPSBTSVpFIC0gMTsKICAgIHdoaWxlIChsb3cgPD0gaGlnaCkgewogICAgICAgIGludCBtaWQgPSAobG93ICsgaGlnaCkgLyAyOwogICAgICAgIGNvbXBhcmlzb25zKys7CiAgICAgICAgaWYgKGFyclttaWRdID09IHZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiBtaWQ7IAogICAgICAgIH0gZWxzZSBpZiAoYXJyW21pZF0gPCB2YWx1ZSkgewogICAgICAgICAgICBsb3cgPSBtaWQgKyAxOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAtMTsKfQppbnQgbWFpbigpIHsKICAgIGludCBhcnJbU0laRV0gPSB7MTIsIDIzLCA5NSwgNDUsIDEyMywgNjcsIDI0LCA2MywgOTAsIDEwMSwKICAgICAgICAgICAgICAgICAgICAgMjEsIDk5OSwgOTksIDQyLCA2NjYsIDc3NywgODc4LCA5ODksIDE1NCwgMjAyNH07CiAgICBpbnQgdmFsdWU7CiAgICBjb3V0IDw8ICJFbnRlciBhIHZhbHVlIHRvIHNlYXJjaCBmb3I6ICIgPDwgZW5kbDsKICAgIGNpbiA+PiB2YWx1ZTsKICAgIGludCBsaW5lYXJDb21wYXJpc29ucyA9IDAsIGJpbmFyeUNvbXBhcmlzb25zID0gMDsKICAgIGludCBsaW5lYXJJbmRleCA9IGxpbmVhclNlYXJjaChhcnIsIHZhbHVlLCBsaW5lYXJDb21wYXJpc29ucyk7CiAgICBpZiAobGluZWFySW5kZXggIT0gLTEpCiAgICAJewogICAgICAgIGNvdXQgPDwgIkxpbmVhciBTZWFyY2g6IGxvY2F0aW9uICIgPDwgbGluZWFySW5kZXggPDwgIiwgY29tcGFyaXNvbnM6ICIgPDwgbGluZWFyQ29tcGFyaXNvbnMgPDwgZW5kbDsKICAgIAl9IAogICAgZWxzZSAKICAgIAl7CiAgICAgICAgY291dCA8PCAiTGluZWFyIFNlYXJjaDogTnVtYmVyIG5vdCBmb3VuZCwgY29tcGFyaXNvbnM6ICIgPDwgbGluZWFyQ29tcGFyaXNvbnMgPDwgZW5kbDsKICAgIAl9CiAgICBzb3J0KGFyciwgYXJyICsgU0laRSk7CiAgICBpbnQgYmluYXJ5SW5kZXggPSBiaW5hcnlTZWFyY2goYXJyLCB2YWx1ZSwgYmluYXJ5Q29tcGFyaXNvbnMpOwogICAgaWYgKGJpbmFyeUluZGV4ICE9IC0xKSAKICAgIAl7CiAgICAgICAgY291dCA8PCAiQmluYXJ5IFNlYXJjaDogbG9jYXRpb24gIiA8PCBiaW5hcnlJbmRleCA8PCAiLCBjb21wYXJpc29uczogIiA8PCBiaW5hcnlDb21wYXJpc29ucyA8PCBlbmRsOwogICAgCX0gCiAgICBlbHNlIAogICAgCXsKICAgICAgICBjb3V0IDw8ICJCaW5hcnkgU2VhcmNoOiBOdW1iZXIgbm90IGZvdW5kLCBjb21wYXJpc29uczogIiA8PCBiaW5hcnlDb21wYXJpc29ucyA8PCBlbmRsOwogICAgCX0KCiAgICByZXR1cm4gMDsKfQo=