二分法查詢給定陣列中的鍵值

2021-10-02 00:19:05 字數 971 閱讀 7157

<?php

//演示陣列的二分查詢演算法:

//前提:

//1,索引陣列;

//2,陣列是已經排好序的了。

$arr1 = [2, 5, 8, 10, 15, 18, 22, 24, 24, 28,33, 35, 50, 55, 56, 57, 60, 61, 62, 66, 70];

$search = 18; //具體分析,可以將該資料修改為不同的值,比如:2, 5, 8,

//原理:每次都找該陣列的某一段的中間項,並跟要找的目標進行「對比」

//1,如果剛好相等,則就算找出來了

//2, 如果中間項比目標大,就只要去左邊的那一半中找

//3, 如果中間項比目標小,就只要去右邊的那一半中找

//假設有這麼乙個函式,它能夠從某個陣列$arr中的某個下標範圍($start---$end)中找指定的資料$value

//這裡,假設:$start一定是不能大於$end,否則,我們就認為找不到了!

function binary_search($arr, $value, $start, $end)

$mid = floor(($start + $end) / 2); //取得兩個下標中的中間下標(一半位置)

$mid_value = $arr[$mid]; //中間項的值

//如果剛好相等,則就算找出來了

if ($mid_value == $value) //如果中間項比目標大,就只要去左邊的那一半中找

elseif ($mid_value > $value) //

//如果中間項比目標小,就只要去右邊的那一半中找

else

}$len = count($arr1);

$result = binary_search($arr1, $search, 0, $len - 1);

var_dump($result);

陣列中的二分法查詢

二分法查詢 第一 二分法中查詢建立在排序的基礎之上。第二 二分法查詢效率要高於 乙個挨著乙個 的這種查詢方式。第三 二分查詢法原理?10 0下標 23 56 89 100 111 222 235 500 600 目標 找出600下標 0 9 2 4 中間元素的下標 arr 4 這個元素就是中間元素 ...

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...