Answer:
#include <iostream>
using namespace std;
void Search_heavy_orange(int arr[], int l, int r, int x)
{
int count = 0, m = 0;
while (l <= r) {
m = l + (r - l) / 2;
// Check if x is present at mid
if (arr[m] == x) {
count++;
}
// If x greater, ignore left half
if (arr[m] < x) {
l = m + 1;
count++;
}
// If x is smaller, ignore right half
else {
r = m - 1;
count++;
}
}
cout << "............For Worst Case......." << endl;
cout << "Orange with heavy weight is present at index " << m << endl;
cout << "Total number of step performed : " << count << endl;
}
int main()
{
// Assuming each orange is 100 gm and the weight of heavy
// orange is 150 gm
int orange_weight[128];
for (int i = 0; i < 127; i++) {
orange_weight[i] = 100;
}
// At worst case the heavy orange should be at last position
// inside the basket : 127
orange_weight[127] = 150;
// We will pass array , start index , last index and the search element
// as the parameters in the function Search_heavy_orange
Search_heavy_orange(orange_weight, 0, 127, 150);
return 0;
}
Explanation: