婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP查找一列有序數組是否包含某值的方法

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

熱門標簽:河南電銷卡外呼系統哪家強 昭通辦理400電話 岳陽外呼型呼叫中心系統在哪里 山西回撥外呼系統 騰訊外呼管理系統 揚州地圖標注app 山西探意電話機器人 百應電話機器人服務 青島語音外呼系統招商

問題:對于一列有序數組,如何判斷給出的一個值,該值是否存在于數組。

思路:判斷是否存在,最簡單是,直接循環該數組,對每一個值進行比較。但是對于有序數組來說,這樣寫就完全沒有利用好“有序”這一特點。

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

//有序數組為

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

//查找值

$str = 1452;

//我們先定義 三個參數

$front = 0;//一個開始值下標

$end = count($arr) - 1;//一個結束值下標

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

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

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

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

-----如上,對于傳入的開始值,結束值,中間值,進行比較。一旦開始值 大于 結束值 則說明沒有找到,結束查詢,反之等于就返回已找到。

具體代碼如下:

$str = 89;//查找值

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

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

echo 'pre>';

var_dump($ren);

function find($arr, $str){

 $front = 0;//開始下標

 $end = count($arr) - 1;//結束下標

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

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

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

   return $mid;//存在直接返回值的下標

  }

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

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

  }

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

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

  }

 }

 return false;

}

返回結果:89為第四個元素值下標3

int(3)

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

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

標簽:鎮江 寶雞 婁底 銅川 黃南 南陽 宜賓 湛江

巨人網絡通訊聲明:本文標題《PHP查找一列有序數組是否包含某值的方法》,本文關鍵詞  PHP,查找,一列,有序,數組,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP查找一列有序數組是否包含某值的方法》相關的同類信息!
  • 本頁收集關于PHP查找一列有序數組是否包含某值的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 北宁市| 务川| 尉氏县| 灯塔市| 遂昌县| 潢川县| 河东区| 宁乡县| 邢台县| 麦盖提县| 虹口区| 济宁市| 临西县| 玛纳斯县| 偃师市| 蛟河市| 高密市| 东乌珠穆沁旗| 谢通门县| 崇信县| 镇坪县| 遵义县| 建水县| 余干县| 临夏县| 石屏县| 西盟| 昂仁县| 宁德市| 阿拉善右旗| 仁寿县| 伽师县| 石渠县| 陇南市| 太保市| 嵊泗县| 化德县| 衡水市| 新宾| 乌鲁木齐市| 新绛县|