php陣列的查詢演算法 即 找出某個陣列中是否存在某個值
1.順序查詢 -
就是遍歷陣列乙個乙個進行判斷如果相等表示找到 退出即可
/**
* 陣列順序查詢某值
* @param array $arr 要檢索的陣列
* @param integer $need 要查詢的數
* @return integer 找到返回該數下標 失敗返回false
*/function gener_search($arr,$need)
}//沒找到返回false
return false;
}
2.二分查詢 -
二分查詢又稱折半查詢,
優點是比較次數少,查詢速度快,平均效能好;
其缺點是要求待查表為有序表,且插入刪除困難。
因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表
/**
* 陣列二分查詢
* @param array $arr 需要檢索的資料
* @param integer $need 查詢的數
* @param integer $begin 開始的位置 起始(預設)為0
* @param integer $end 結束位置 預設最後
* @return integer 找到返回該數下標 失敗返回false
*/$arr = array(2,4,6,10,16,26,42,68,110);
function binary_search($arr, $need, $begin=0, $end=null)
//得到陣列中間位置
$mid_index = floor(($begin+$end)/2);
//中間數如果正好相等 返回索引退出
if ($arr[$mid_index] == $need)
//中間數若大於查詢數 標識在其左邊 左邊資料遞迴操作
if ($arr[$mid_index] > $need)
$ret = binary_search($arr, $need, $begin, $mid_index-1);
}else
$ret = binary_search($arr, $need, $mid_index+1, $end);
}return $ret;
}
php陣列排序演算法 查詢演算法
陣列排序演算法氣泡排序 從陣列第乙個元素開始,從左到右,相鄰的2個元素比較大小 如果左邊的比右邊的大,則交換位置。邏輯描述 1.需要進行n 1趟比較過程 2.每一趟的比較都比前一趟少比一次,第一趟需要比較n 1次 3.每趟比較,從陣列的開頭開始,跟緊鄰元素比較,並進行交換 需要的時候 示例 arr2...
php 陣列模糊查詢
乙個陣列中有多個值,現在需要輸入某個字串,要模糊查詢出所有帶有這個字串的陣列中的值,該如何實現呢?看例子 keywords dd arrays array 0 db aabbccddee 1 aabbccdd 2 aaa 3 aabb 4 aabbcc 5 aabbccddeeff arr arra...
php查詢演算法,PHP演算法之二分查詢
二分查詢的定義 二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。演算法的要求 從上面的定義我們可以知道,滿足該演算法的要求必須如下兩點 必須採用順序儲存結構。必須按關鍵字大小有序排列。演算法的步...