二分法查找

二分法查找效率高,其查找次數(shù)與總元素數(shù)量存在對數(shù)關(guān)系

  • 原理
    在進行二分法查找前需要先對數(shù)據(jù)進行排序(具體排序?qū)崿F(xiàn)詳見下一篇文章),定義left(數(shù)據(jù)集的開頭),right(數(shù)據(jù)集結(jié)尾)兩個變量,然后在這組數(shù)據(jù)中找到mid=(left+right)/2,然后將待查找元素與mid所指元素進行比較,如果相等將索引返回,如果查找元素大于mid所指元素,則將left向右移動即left=mid+1;如果查找元素小于mid所指元素,則將left向左移動即right=mid-1。重復(fù)以上過程直到left>right(因為此時表明并不存在待查找元素)
  • C語言實現(xiàn)方法
    <pre>

include <stdio.h>

int search(int aim,int data[],int size);
int main(){
int aim=14;
int data[]={5,7,9,11,13,17,24,47,68,72,89,90,112};
printf("%d\n",search(aim,data,13));//希望輸出14所對應(yīng)的索引號
return 0;
}
int search(int aim,int data[],int size){
//二分法搜索
int det = -1;
int left = 0;//定義left整數(shù)變量
int right = size-1;//定義right
while(left<=right){//在while循環(huán)中直到有一個條件結(jié)束搜索
int mid = (left+right)/2;
if(data[mid]<aim){
left = mid+1;
}else if(data[mid]>aim){
right = mid-1;
}else{
det = mid;
break;//一定要break跳出循環(huán)
}
}
return det;
}
</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift的二分法查找實踐 在這篇教程中我們會使用計算機科學(xué)里一個基礎(chǔ)的算法:二分法查找binary search...
    不是謝志偉閱讀 2,012評論 1 5
  • 一維數(shù)組 首先開始最基本的Binary Search, 數(shù)組是有序的,但是有重復(fù)數(shù)。例題: Search for ...
    dol_re_mi閱讀 2,496評論 0 2
  • php實現(xiàn)二分法的查找其實很簡單,跟我一起來看看怎么實現(xiàn)吧。 二分法查找需要數(shù)組是一個遞增的數(shù)組。 想要寫出二分法...
    f12c2f60fcbb閱讀 989評論 0 0
  • 二分法查找是定義最小值和最大值,還有一個中間值。將得到的數(shù)字與中間數(shù)比較,如果大于中間數(shù),把最小值改成中間值加1,...
    腹黑小葉子orz閱讀 927評論 0 1
  • 什么是二分查找法? 二分法檢索(binary search)又稱折半檢索,二分法檢索的基本思想是設(shè)字典中的元素從小...
    Sheryl_Nome閱讀 380評論 0 0

友情鏈接更多精彩內(nèi)容