二分查詢法

2021-07-27 16:50:05 字數 1162 閱讀 8362

1,二分查詢法,就相當是在迴圈中邊比較邊排除的一種搜尋定位的方法,迴圈次數比我們平時的逐步搜尋少,效能高

2,簡單來講,就是在必須是有序的序列中,尋找某個值,通過一分為二的比較排除,減少比較次數

3,每次排除都把所有的情況分成"可能"和"不可能"兩種,然後拋棄所有"不可能"的情況.

因為二分查詢,也是在迴圈中比較查詢,所以一定少不了迴圈。

首先就會想到用迴圈和遞迴(其實遞迴本質上也是一種迴圈)。

在不斷的迴圈比較中,$min和$max會越來越接近,到最後達到一致或者違背序列。這個也正好就是迴圈條件或者遞迴條件

核心就是在每次比較之後對$min,$max,$mid的處理。

<?php

header('content-type:text/html;charset=utf-8');

//二分查詢法

$test_arr = array(1,2,4,5,6,7,8,9,13,35,46,67,79,123,345,567,678,879);

echo "";

print_r($test_arr);

//**方法1,迴圈**

function binarysearch($arr,$target)

elseif($arr[$mid] < $target)else

}return '陣列不符合條件';

}//方法2,遞迴

function binarysearchrecursion(&$arr,$min,$max,$target)

elseif($arr[$mid] < $target)else}}

$res = binarysearchrecursion($test_arr,0,17,5);

echo $res;

?>

總結:

其實遞迴的方法可以不要$min,$max引數,在比較完成後直接把陣列處理後傳入即可。
複習:

array_slice()   //取出一段

array_splice() //去掉一部分並且用其他的替代

array_chunk() //分割

floor() //四捨五入

二分查詢法

二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...

二分查詢法

有序陣列中的find 方法 public int find long serchkey int lowerbound 0 int upperbound nelems 1 while true curin lowerbound upperbound 2 if a curin serchkey retu...

二分查詢法

演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止...