PHP查找(算法)
由 admin 发表于 10:131顺序查找(算法)
//$n为待查找的数组元素的个数,$k为待查找的元素 function seq_sch($array, $n, $k) { $array[$n] = $k; for($i=0; $i<$n; $i++) { if($array[$i]==$k) { return true; break; } } if ($i<$n) //判断是否到数组的末尾 { return $i; } else { return false; } } $array = array(3, 6, 1, 9, 2, 10); $n = count($array); $k = 8; if(seq_sch($array, $n, $k)) { echo "顺序查找成功"; } else { echo "顺序查找失败"; }
2.实现二分查找(折半查找)算法
二分查找又称折半查找,它是一种效率较高的查找方法。
【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。
//$k为要查找的关键字(注:待查找的数组元素为奇数个) function bin_sch($array, $low, $high, $k) { if ($low <= $high) { $mid = intval(($low+$high)/2); if ($array[$mid] == $k) { return true; } elseif ($k < $array[$mid]) { return bin_sch($array, $low, $mid-1, $k); } else { return bin_sch($array, $mid+1, $high, $k); } } return false; } $array = array(1, 2, 4, 6, 8); $low = min(1, 2, 4, 6, 8); $high = max(1, 2, 4, 6, 8); $k = 7; if(bin_sch($array, $low, $high, $k)) { echo "二分查找成功"; } else{ echo "二分查找失败"; }