• 【十三】顺序排序和二分法排序


     1 <?php
     2 //顺序查找
     3     $a=array(1,6,3,2,2,5,3);
     4     function search($a,$findval){
     5         $flag=false;
     6         for($i=0;$i<count($a);$i++) {
     7             if ($a[$i]==$findval) {
     8                 echo "找到了,下标为".$i;
     9                 $flag=true;
    10                 break;
    11             }            
    12         }
    13         if (!$flag) {
    14             echo "查询不到";
    15         }
    16     }
    17     search($a,300);
    18 //二分查找法 前提是必须是有序数组
    19 //思路:
    20 //1.用中间数与findval对比
    21 //2.如果要查找的数比中间数小,则在左边查找
    22 //3.反之,在右边查找
    23 //4.不大于或小于左边,则刚好是中间数
    24     function binarysearch($arr,$findval,$leftindex,$rightindex){
    25         if($leftindex>$rightindex){
    26             echo "找不到该数";
    27             return;
    28         }
    29         $middleindex=round(($leftindex+$rightindex)/2);
    30         if ($findval<$arr[$middleindex]) {
    31             binarysearch($arr,$findval,$leftindex,$middleindex-1);
    32         }else if ($findval>$arr[$middleindex]) {
    33             binarysearch($arr,$findval,$middleindex+1,$rightindex);
    34         }else{
    35             echo "找到了这个数 下标为$middleindex";
    36         }
    37     }
    38     $arr1=array(6,44,66,69,77,99);
    39     // $arr=array(1,23,53,412);
    40     binarysearch($arr1,99,0,count($arr1)-1);
    41 ?>

    结果:

  • 相关阅读:
    BZOJ1954 Pku3764 The xor-longest Path
    BZOJ3697 采药人的路径
    BZOJ1468 Tree
    BZOJ2326 [HNOI2011]数学作业
    BZOJ2809 [Apio2012]dispatching
    BZOJ1334 [Baltic2008]Elect
    BZOJ2882 工艺
    BZOJ3791 作业
    BZOJ1224 [HNOI2002]彩票
    [noip2013]花匠
  • 原文地址:https://www.cnblogs.com/8013-cmf/p/7820997.html
Copyright © 2020-2023  润新知