zoukankan      html  css  js  c++  java
  • PHP算法之二分查找和顺序查找

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

     1 /**
     2  * 二分查找 (数组里查找某个元素)
     3  * $k为要查找的关键字(注:待查找的数组元素为奇数个)$low为查找范围的最小键值,$high为查找范围的最大键值  
     4  */
     5 $low = min(array_keys($array));
     6 $high = max(array_keys($array));
     7 function dichotomy_search($array, $low, $high, $k) {
     8     if ($low <= $high) {
     9         $mid = intval ( ($low + $high) / 2 );
    10         if ($array [$mid] == $k) {
    11             return $mid;
    12         } elseif ($k < $array [$mid]) {
    13             return dichotomy_search ( $array, $low, $mid - 1, $k );
    14         } else {
    15             return dichotomy_search ( $array, $mid + 1, $high, $k );
    16         }
    17     }
    18     return -1;
    19 }

    二、顺序查找 (数组里查找某个元素)

     1 /**
     2  * 顺序查找 (数组里查找某个元素)
     3  * $array为数组,$k为要查找的值  
     4  */
     5 function sequential_search($array, $k) {
     6     $n = count($array);
     7     $array[$n] = $k;                //新建一个元素,并将k存放进去  
     8     for($i = 0; $i < $n; $i++) {
     9         if($array[$i] == $k) {
    10             break;
    11         }
    12     }
    13     if($i < $n) {                 //如果在新元素的前面找到了要找的值,则返回该值 
    14         return $i;
    15     } else {
    16         return -1;
    17     }
    18 }
  • 相关阅读:
    [CF1198D] Rectangle Painting 1
    [CF696B] Puzzles
    [CF540D] Bad Luck Island
    [P1654] OSU!
    [P6154] 游走
    [CF1265E] Beautiful Mirrors
    [CF920F] SUM and REPLACE
    [CF453B] Little Pony and Harmony Chest
    [CF808D] Array Division
    [CF1155D] Beautiful Array
  • 原文地址:https://www.cnblogs.com/h07061108/p/sequential_dichotomy.html
Copyright © 2011-2022 走看看