二分查詢需要注意的幾點及優化

2021-06-26 02:47:01 字數 687 閱讀 1678

我們都已經很清楚普通的二分查詢演算法的寫法:

1. 處理無效輸入的時候

bool isinvalidinput=false;//可以用作訊號量處理

int binaryserach(int array,int n,int key)

isinvalidinput=false;    //區分-1表示的意思是無效輸入還是沒找到

int left,right,middle;

left=0,right=n-1;

while(left<=right)

return -1;   //沒找到返回-1

上面這種是最普通的二分查詢演算法,但是我們可以進一步優化,針對每次迴圈需要比較兩次,而且如果存在相同的數,返回的也不是第一次出現的位置,優化後的**:

2.針對上述兩個問題進行優化後

bool isinvalidinput=false;

int binaryserach(int array,int n,int key)

isinvalidinput=false;    

int left,right,middle;

left=-1,right=n;      //這裡不一樣了,

while(left+1 != right)

if(right>=n||array[right]!=key)

return right;

二分查詢需要注意的Bug

不應該使用middle left right 2這種情況,否則對於大資料來說會產生溢位問題。切記!值不同的時候,left相對middle應該 1,不要直接用middle進行賦值。include include using namespace std 下面乙個移位是一樣的,相當於除去2,主要是要用ri...

優化爬蟲程式時需要注意哪幾點?

1.採集模組 2.資料分析模組 由於網路採集存在各種不確定性,資料分析部分在根據需要做好資料解析之後,要做好異常處理及定位重啟功能,避免出現程式異常退出或者資料採集遺漏 重複的情況。3.反爬策略模組 分析目標伺服器的爬蟲策略,控制爬蟲請求頻率甚至包括驗證碼 加密資料的破解,同時使用優質 或爬蟲 比如...

學習程式設計需要注意的幾點

1 不要死記硬背語法 程式開發的語法 規範特別多,不可能全記下來,只要知道有這麼乙個功能即可,需要的時候再翻書或查詢幫助。這樣省時省力,可以將更多的時間和精力用在技術的提高上。2 多動手,多練習 死讀書是成不了程式設計高手的!只有多練習,多上機編寫程式,才能在實踐中提高對程式設計的認識。3 遇到問題...