100天每天乙個演算法 第5天 二分查詢演算法

2021-08-24 18:20:26 字數 542 閱讀 5889

二分查詢又稱折半查詢,是一種效率比較高的查詢演算法,但是它也有它的侷限,即線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排

實現原理:

假設表中元素是按公升序排列,取表中間位置記錄的元素與要查詢的元素比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的元素大於查詢元素,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

php實現**如下

<?php

/*二分查詢法

*/$arr = [1,5,6,7,8,11,22,44,55,56];

var_dump(binarysearch($arr,11));

function

binarysearch

($arr,$x) elseif ($x > $arr[$mid]) elseif ($x = $arr[$mid])

}return -1;//代表找不到

}

每天乙個小指令碼,第一天

每天乙個小指令碼,今天第一天 python小指令碼 需求 列印出指定目錄下的所有檔案的絕對路徑 import os direct r f text 指定的目錄名稱 result os.walk direct for dir name,sub dir list,file name list in re...

一天乙個演算法 隨機洗牌演算法

洗牌演算法是我們常見的隨機問題,在玩遊戲 隨機排序時經常會碰到。它可以抽象成這樣 得到乙個m以內的所有自然數的隨機順序陣列。洗牌演算法大多都是建立在隨機數的基礎上的,現在介紹幾種隨機數基礎上的隨機洗牌演算法 1 第一種可以簡單描述成 隨機抽牌,放在另一組 再次抽取,抽到空牌則重複抽。抽到空牌則重新抽...

八大排序演算法,一天乙個

因為還在學習的階段,其實我對於八個排序演算法中的堆排序和歸併排序還是挺懵的 氣泡排序是乙個簡單的排序演算法,核心思想是兩兩比較,每次迴圈將最大 最小 的數移動到陣列末端,然後進行第二次迴圈 直到陣列有序。演算法的時間複雜度為 n 效率較低。public static void bubblesort ...