顺序查找和二分查找

偏执的太偏执、 2023-10-17 00:29 125阅读 0赞

来源:http://blog.chenapp.com/archives/120

http://blog.csdn.net/zhuzhao/article/details/3969044

// 二分查找(数组里查找某个元素)

  1. //search函数 其中$array为数组,$k为要找的值,$low为查找范围的最小键值,$high为查找范围的最大键值
  2. function search($array, $k, $low=0, $high=0)
  3. {
  4. if(count($array)!=0 and $high == 0) //判断是否为第一次调用
  5. {
  6. $high = count($array);
  7. }
  8. if($low <= $high) //如果还存在剩余的数组元素
  9. {
  10. $mid = intval(($low+$high)/2); //取$low和$high的中间值
  11. if ($array[$mid] == $k) //如果找到则返回
  12. {
  13. return $mid;
  14. }
  15. elseif ($k < $array[$mid]) //如果没有找到,则继续查找
  16. {
  17. return search($array, $k, $low, $mid-1);
  18. }
  19. else
  20. {
  21. return search($array, $k, $mid+1, $high);
  22. }
  23. }
  24. return -1;
  25. }
  26. $array = array(4,5,7,8,9,10); //测试search函数
  27. echo search($array, 8); //调用search函数并输出查找结果

16 20131030111044_527078b4b0b38.gif // 顺序查找(数组里查找某个元素)
17 20131030111044_527078b4b0b38.gif function seq_sch( $array , $n , $k ){
18 20131030111044_527078b4b0b38.gif $array [ $n ] = $k ;
19 20131030111044_527078b4b0b38.gif for ( $i = 0 ; $i < $n ; $i ++ ){
20 20131030111044_527078b4b0b38.gif if ( $array [ $i ] == $k ){
21 20131030111044_527078b4b0b38.gif break ;
22 20131030111044_527078b4b0b38.gif }
23 20131030111044_527078b4b0b38.gif }
24 20131030111044_527078b4b0b38.gif if ( $i < $n ){
25 20131030111044_527078b4b0b38.gif return $i ;
26 20131030111044_527078b4b0b38.gif } else {
27 20131030111044_527078b4b0b38.gif return - 1 ;
28 20131030111044_527078b4b0b38.gif }
29 20131030111044_527078b4b0b38.gif}

发表评论

表情:
评论列表 (有 0 条评论,125人围观)

还没有评论,来说两句吧...

相关阅读