[英]counting comparisons in a binary search function
我正在運行這個二進制搜索 function 並且我正在努力運行一個增量器來計算已進行的比較量。
我想在最后一個 cout 語句(為空)中與 output 進行比較的次數。 有人可以指出我正確的方向嗎?
void binarySearch( int nums[], int size)
{
int first = 0; //first array elements
int last = size - 1; //last array
int middle; //midpoint of search
int position = -1; //position of search value
bool found = false; //flag
for (int j = 1; j < 4; j++)
{
int randVal = rand() % size + 1; //rand value to be searched
while (!found && first <= last)
{
middle = (first + last) / 2; //calculate midpoint
if( nums[middle] == randVal) //if value is at mid
{
found = true;
position = middle;
}
else if (nums[middle] > randVal) //if value is in lower half
{ last = middle - 1; }
else
{ first = middle + 1; } //if value is in upper ha;f
}
cout << "|Run " << j << ": " << endl;
cout << " -Search: " << randVal << "\n"; //cout searched value
cout << " -Comparisons: " << "\n\n"; //cout # of comparisons that were made
}
}
void binarySearch( int nums[], int size)
{
int first = 0; //first array elements
int last = size - 1; //last array
int middle; //midpoint of search
int position = -1; //position of search value
bool found = false; //flag
for (int j = 1; j < 4; j++)
{
int comp = 0;
int randVal = rand() % size + 1; //rand value to be searched
while (!found && first <= last)
{
comp++;
middle = (first + last) / 2; //calculate midpoint
if( nums[middle] == randVal) //if value is at mid
{
found = true;
position = middle;
}
else if (nums[middle] > randVal) //if value is in lower half
{ last = middle - 1; }
else
{ first = middle + 1; } //if value is in upper ha;f
}
cout << "|Run " << j << ": " << endl;
cout << " -Search: " << randVal << "\n"; //cout searched value
cout << " -Comparisons: " << comp << "\n\n"; //cout # of comparisons that were made
}
}
注意:如果您不需要最終比較(找到的值),您可以從 -1 而不是 0 開始 comp。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.