記錄曾遇到的一個二分查找問題

題目描述:
給定一個 可重復有序數(shù)列 Array,判斷一個數(shù)S是否在數(shù)列中,如果在,找出第一個符合條件的數(shù)的下標。

當時,由于之前沒有研究過算法的問題,再加上緊張,就沒答上來,人家還提示我“邊界問題”。。。其實,找到 與S相等的數(shù)之后,看它的前一位數(shù)是否小于S,如果是小于,那么 S 就是要找的數(shù),否則,在左側較小的數(shù)列部分繼續(xù)找。

代碼實現(xiàn):

<?php
$arr = [ 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 7 ];

search_num($arr, 4);

function search_num($arr, $search){
    $len = count($arr);
    $start = 0;
    $end = $len-1;
    if($search < $arr[$start] || $search > $arr[$end]){
        var_dump($search .' 不在數(shù)列中');
        return;
    }

    while (1) {
        $middle = ceil(($start+$end)/2);
        var_dump('index: '.$middle.', middle: '.$arr[$middle]);

        if($search == $arr[$middle] && $search > $arr[$middle-1]){
            var_dump($search .' 在數(shù)列中的第'.$middle.'位');
            return;
        }

        if($search <= $arr[$middle]){
            $end = $middle;
            continue;
        }

        if($search > $arr[$middle]){
            $start = $middle;
            continue;
        }
    }
}

/* 輸出結果:
/www/test/sort.php:100:string 'index: 14, middle: 4' (length=20)
/www/test/sort.php:100:string 'index: 7, middle: 3' (length=19)
/www/test/sort.php:100:string 'index: 11, middle: 3' (length=20)
/www/test/sort.php:100:string 'index: 13, middle: 4' (length=20)
/www/test/sort.php:103:string '4 在數(shù)列中的第13位' (length=25)
*/

哎,其實沒有什么難度,記錄一下自己糟糕的經歷吧。。。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 國家電網公司企業(yè)標準(Q/GDW)- 面向對象的用電信息數(shù)據交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,496評論 6 13
  • 算法思想貪心思想雙指針排序快速選擇堆排序桶排序荷蘭國旗問題二分查找搜索BFSDFSBacktracking分治動態(tài)...
    第六象限閱讀 4,905評論 0 0
  • 計算機二級C語言上機題庫(南開版) 1.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun,它的功能是:將低于平...
    MrSunbeam閱讀 6,622評論 1 42
  • 1、熟讀,培養(yǎng)文言文的語感 2、蔣老師他每次都要求我們一句一句的翻譯 3、對每一個字要多去查古漢字至常用字典,要逐...
    瓦卡卡媽閱讀 577評論 0 1
  • 這一路走來,遇到了許多人和事,路途的風景也挺美的。 回想起以前讀初中的三年時光,自己過得是多么的自由自在,無憂無慮...
    伯樂之家閱讀 187評論 1 0

友情鏈接更多精彩內容