i am having difficulty with the binary search function for some reason the comparisons are coming up much higher then they should be.

heres my code from main

`````` comp = 0;

for( index=0; index<Max_Tests; index++)
{

results = BinarySearch(list, test[index], comp);

cout<< setw(5) << test[index] << setw(15);

if( results == -1)
{

}

else
{
cout<<"Found"<<setw(16)<<comp << endl;

count_found++;

total_comp_lin +=comp;
}

comp++;

}
``````

my binary search function

``````int BinarySearch(const int list[], int value, int& comps)

{

int first = 0,
last = Max_Size-1,
middle,
position = -1;

bool found = false;

while(!found && first <= last)
{
middle = (first + last)/2;
if (list[middle]== value)
{
found = true;
position = middle;
}

else if (list[middle] > value)
last = middle - 1;
else
first = middle + 1;
}

return position;

}
``````

my Results

``````Binary Search Version
Test value    Result    Number of Comparisons
2823          Found               0
3056          Found               1
1193          Found               2
2618          Found               3
4687          Found               4
4786          Found               7
1579          Found               9
174          Found              10
2394          Found              12
2289          Found              13
2841          Found              15
3745          Found              18
4671          Found              19
4617          Found              20
1676          Found              23
3185          Found              24
2688          Found              25
1232          Found              26
3346          Found              27
1643          Found              28
1204          Found              30
2571          Found              31
1001          Found              33
1065          Found              34
4180          Found              35
3057          Found              36
4475          Found              40
2920          Found              43
3059          Found              46
3839          Found              47
1725          Found              48
2635          Found              49
Press any key to continue . . .
``````

## All 3 Replies

i see its counting my all my test values and incrementing but how could i increment the actual comparisons?

Try to utilise `comps` in your BinarySearch function. You're really not doing anything with that.

Comparisons in Binary Search is as such - Once a list is divided into half then the function has made a comparison and stops comparing once the `value` is `found`.

So now think about that^ and try to utilise comps in the BinarySearch function.

Hope that helps :)

thanks a lot :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.