主頁(yè) > 知識(shí)庫(kù) > PHP查找一列有序數(shù)組是否包含某值的方法

PHP查找一列有序數(shù)組是否包含某值的方法

熱門(mén)標(biāo)簽:河南電銷卡外呼系統(tǒng)哪家強(qiáng) 昭通辦理400電話 岳陽(yáng)外呼型呼叫中心系統(tǒng)在哪里 山西回?fù)芡夂粝到y(tǒng) 騰訊外呼管理系統(tǒng) 揚(yáng)州地圖標(biāo)注app 山西探意電話機(jī)器人 百應(yīng)電話機(jī)器人服務(wù) 青島語(yǔ)音外呼系統(tǒng)招商

問(wèn)題:對(duì)于一列有序數(shù)組,如何判斷給出的一個(gè)值,該值是否存在于數(shù)組。

思路:判斷是否存在,最簡(jiǎn)單是,直接循環(huán)該數(shù)組,對(duì)每一個(gè)值進(jìn)行比較。但是對(duì)于有序數(shù)組來(lái)說(shuō),這樣寫(xiě)就完全沒(méi)有利用好“有序”這一特點(diǎn)。

所有我們使用到“二分法查找”,

//有序數(shù)組為

$arr = array(2,5,66,87,954,1452,5865);

//查找值

$str = 1452;

//我們先定義 三個(gè)參數(shù)

$front = 0;//一個(gè)開(kāi)始值下標(biāo)

$end = count($arr) - 1;//一個(gè)結(jié)束值下標(biāo)

$mid = intval(($front + $end) / 2);//中間值下標(biāo)

1、第一次比較,我們直接判斷查找值str是否等于中間值mid,如果等于 直接返回 true;

2、如果查找值str大于中間值mid,則說(shuō)明查找值str可能在中間值的右邊,即對(duì)開(kāi)始值front需重新賦值 = 中間值mid + 1,結(jié)束值end不用變,依次中間值mid為新的開(kāi)始值 + 結(jié)束值;

3、如果查找值str小于中間值mid,則說(shuō)明查找值str可能在中間值的左邊,即開(kāi)始值不用變,結(jié)束值end需重新賦值 = 中間值 - 1,依次中間值mid為開(kāi)始值 + 新的結(jié)束值;

-----如上,對(duì)于傳入的開(kāi)始值,結(jié)束值,中間值,進(jìn)行比較。一旦開(kāi)始值 大于 結(jié)束值 則說(shuō)明沒(méi)有找到,結(jié)束查詢,反之等于就返回已找到。

具體代碼如下:

$str = 89;//查找值

$arr = [1,55,66,89,420];//有序數(shù)組

$ren = find($arr, $str);

echo 'pre>';

var_dump($ren);

function find($arr, $str){

 $front = 0;//開(kāi)始下標(biāo)

 $end = count($arr) - 1;//結(jié)束下標(biāo)

 while($front = $end){//結(jié)束值 大于 開(kāi)始值 ,反之則退出

  $mid = intval(($front + $end) / 2);//中間值下標(biāo)

  if($str == $arr[$mid]){

   return $mid;//存在直接返回值的下標(biāo)

  }

  if($str > $arr[$mid]){

   $front = $mid + 1;//在前面

  }

  if($str  $arr[$mid]){

   $end = $mid - 1;//在后面

  }

 }

 return false;

}

返回結(jié)果:89為第四個(gè)元素值下標(biāo)3

int(3)

以上就是PHP查找一列有序數(shù)組是否包含某值(二分查找)的詳細(xì)內(nèi)容,如果有任何補(bǔ)充可以聯(lián)系腳本之家小編。

您可能感興趣的文章:
  • PHP數(shù)組基本用法與知識(shí)點(diǎn)總結(jié)
  • PHP 數(shù)組操作詳解【遍歷、指針、函數(shù)等】
  • php數(shù)組指針函數(shù)功能及用法示例
  • php數(shù)組函數(shù)array_push()、array_pop()及array_shift()簡(jiǎn)單用法示例
  • PHP字符串與數(shù)組處理函數(shù)用法小結(jié)
  • PHP實(shí)現(xiàn)二維數(shù)組(或多維數(shù)組)轉(zhuǎn)換成一維數(shù)組的常見(jiàn)方法總結(jié)
  • PHP實(shí)現(xiàn)提取多維數(shù)組指定一列的方法總結(jié)
  • php實(shí)現(xiàn)快速對(duì)二維數(shù)組某一列進(jìn)行組裝的方法小結(jié)
  • PHP數(shù)組對(duì)象與Json轉(zhuǎn)換操作實(shí)例分析
  • 如何在PHP中使用數(shù)組

標(biāo)簽:鎮(zhèn)江 寶雞 婁底 銅川 黃南 南陽(yáng) 宜賓 湛江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP查找一列有序數(shù)組是否包含某值的方法》,本文關(guān)鍵詞  PHP,查找,一列,有序,數(shù)組,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP查找一列有序數(shù)組是否包含某值的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于PHP查找一列有序數(shù)組是否包含某值的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章