簡體   English   中英

在二進制搜索中計數比較 function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM