你真的會寫二分查詢嗎?

2021-08-08 22:38:14 字數 873 閱讀 3162

二分查詢

/**

* 二分查詢,找到該值在陣列中的下標,否則為-1

*/static

int binaryserach(int array, int key)

else

if (array[mid] < key)

else

}return -1;

}

每次移動left和right指標的時候,需要在mid的基礎上+1或者-1, 防止出現死迴圈, 程式也就能夠正確的執行。

注意:**中的判斷條件必須是while (left <= right),否則的話判斷條件不完整,比如:array[3] = ;待查詢的鍵為5,此時在(low < high)條件下就會找不到,因為low和high相等時,指向元素5,但是此時條件不成立,沒有進入while()中。

例題 給定乙個已經排好序的字串陣列,空字串散布在該陣列中,編寫乙個函式尋找乙個 給定字串的位置。

思路:既然有序,一定是二分查詢。當遇到空字元時,mid+1,一直到mid不為空字元。

#include

using

namespace

std;

int search(string s,int low,int high,string x)

if(s[t] == x)

return t;

else

if(s[t] < x)

low = t+1;

else

high = mid-1;

}return -1;

}int main() ;

cout

<0, 12, "ball")0;}

你真的會二分查詢嗎?

看到這個標題無論你是處於怎樣的心理進來看了,我覺得都是值得的。因為這個問題太簡單,任何乙個開始接觸 真正 演算法基本都是從二分查詢開始的。至於二分查詢都不知道是什麼的可以先去找別的資料看下,再來看這篇文章。既然很簡單,那麼我們開始一起寫乙個吧,要求是對num 不減序列在區間 0,7 進行查詢,當然我...

你真的會二分查詢嗎?

引用請註明出處 看到這個標題無論你是處於怎樣的心理進來看了,我覺得都是值得的。因為這個問題太簡單,任何乙個開始接觸 真正 演算法基本都是從二分查詢開始的。至於二分查詢都不知道是什麼的可以先去找別的資料看下,再來看這篇文章。既然很簡單,那麼我們開始一起寫乙個吧,要求是對num 不減序列在區間 0,7 ...

你真的會二分查詢嗎?

看到這個標題無論你是處於怎樣的心理進來看了,我覺得都是值得的。因為這個問題太簡單,任何乙個開始接觸 真正 演算法基本都是從二分查詢開始的。至於二分查詢都不知道是什麼的可以先去找別的資料看下,再來看這篇文章。既然很簡單,那麼我們開始一起寫乙個吧,要求是對num 不減序列在區間 0,7 進行查詢,當然我...