解析php二分法查找數(shù)組是否包含某一元素
<?php
$searchValue = (int)$_GET['key'];
function search(array $array, $value)
{
$max = count($array)-1;
$min = 0;
$isAscSort = $array[$min] < $array[$max];
while (TRUE) {
$sum = $min+$max;
$midKey = (int)($sum%2 == 1 ? ceil($sum/2) : $sum/2);
if ($max < $min) {
return -1;
} else if ($value == $array[$midKey]) {
return 1;
} else if ($value > $array[$midKey]) {
$isAscSort ? $min = $midKey+1 : $max = $midKey-1;
} else if ($value < $array[$midKey]) {
$isAscSort ? $max = $midKey-1 : $min = $midKey+1;
}
}
}
$array = array(
'4', '5', '7', '8', '9', '10', '11', '12'
);
// 正序
echo search($array, $searchValue);
// 逆序
rsort($array);
echo search($array, $searchValue);
這個(gè)之前搜過(guò),看過(guò)百度百科的例子(Java的實(shí)現(xiàn)),還有一些其他技術(shù)宅寫(xiě)的Code,都有問(wèn)題,根本就沒(méi)實(shí)現(xiàn),這些人不測(cè)試就放出來(lái)誤導(dǎo)人,大家可以去搜搜看下,昨天閑來(lái)無(wú)事就自己寫(xiě)一個(gè)分享給大家。
這個(gè)沒(méi)考慮非順序鍵的數(shù)組,主要是方法,如果需要大家可以自己擴(kuò)展下。
- PHP實(shí)現(xiàn)的折半查找算法示例
- PHP 冒泡排序 二分查找 順序查找 二維數(shù)組排序算法函數(shù)的詳解
- php二分查找二種實(shí)現(xiàn)示例
- php順序查找和二分查找示例
- php數(shù)據(jù)結(jié)構(gòu)與算法(PHP描述) 查找與二分法查找
- PHP二分查找算法示例【遞歸與非遞歸方法】
- PHP二分查找算法的實(shí)現(xiàn)方法示例
- PHP基于二分法實(shí)現(xiàn)數(shù)組查找功能示例【循環(huán)與遞歸算法】
- PHP實(shí)現(xiàn)的二分查找算法實(shí)例分析
- PHP折半(二分)查找算法實(shí)例分析
相關(guān)文章
PHP實(shí)現(xiàn)蛇形矩陣,回環(huán)矩陣及數(shù)字螺旋矩陣的方法分析
這篇文章主要介紹了PHP實(shí)現(xiàn)蛇形矩陣,回環(huán)矩陣及數(shù)字螺旋矩陣的方法,結(jié)合具體實(shí)例形式分析了蛇形矩陣,回環(huán)矩陣及數(shù)字螺旋矩陣的概念、表示方法及php實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05php中使用addslashes函數(shù)報(bào)錯(cuò)問(wèn)題的解決方法
php中使用addslashes函數(shù)報(bào)錯(cuò)問(wèn)題的解決方法,需要的朋友可以參考下2013-02-02php獲取textarea的值并處理回車(chē)換行的方法
這篇文章主要介紹了php獲取textarea的值并處理回車(chē)換行的方法,涉及到對(duì)特殊字符的轉(zhuǎn)換與處理,需要的朋友可以參考下2014-10-10php 無(wú)極分類(lèi)(遞歸)實(shí)現(xiàn)代碼
php 無(wú)極分類(lèi)(遞歸)實(shí)現(xiàn)代碼,需要的朋友可以參考下。2010-01-01PHP獲取欄目的所有子級(jí)和孫級(jí)欄目的ID號(hào)示例
這篇文章主要介紹了PHP獲取欄目的所有子級(jí)和孫級(jí)欄目的ID號(hào)的具體實(shí)現(xiàn),需要的朋友可以參考下2014-04-04php保留數(shù)字小數(shù)點(diǎn)后兩位的方法
我們?cè)趯W(xué)習(xí)或生活中經(jīng)常會(huì)遇到需要保留數(shù)字小數(shù)點(diǎn)后兩位的問(wèn)題,所以本文小編給大家介紹了使用php保留數(shù)字小數(shù)點(diǎn)后兩位的方法,文中通過(guò)代碼示例介紹的非常詳細(xì),感興趣的同學(xué)可以參考閱讀下2023-12-12php實(shí)現(xiàn)的后臺(tái)表格分頁(yè)功能示例
這篇文章主要介紹了php實(shí)現(xiàn)的后臺(tái)表格分頁(yè)功能,涉及php針對(duì)數(shù)據(jù)庫(kù)的連接、查詢(xún)、刪除、動(dòng)態(tài)生成表格等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10PHP實(shí)現(xiàn)動(dòng)態(tài)表單生成工具詳解
表單包含多種input類(lèi)型,包括 hiiden類(lèi)型 ,text類(lèi)型,radio類(lèi)型等。但手寫(xiě)表單累,耗時(shí)耗力,開(kāi)發(fā)銷(xiāo)量太低且代碼量大了還容易寫(xiě)出bug,所以本文將用PHP編寫(xiě)動(dòng)態(tài)表單生成工具,需要的可以參考一下2022-03-03