首頁 > web前端 > js教程 > 主體

JavaScript中二維數組的查找(程式碼範例)

不言
發布: 2019-01-07 10:17:21
轉載
6623 人瀏覽過

這篇文章帶給大家的內容是關於JavaScript中二維陣列的查找(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組是否含有該整數。

基本想法

二維陣列是有順序的,例如下面的資料:

1 2 3
4 5 6
7 8 9
登入後複製

可以直接利用左下角數字開始尋找:

大於:比較上移

小於:比較右移

程式碼想法

將二維陣列看成平面座標系

從左下角(0,arr.length-1)開始比較:

目標值大於座標值---x座標1

目標值小於座標值- --y座標-1

注意:

二維數組arri中

#j代表x座標

i代表y座標

程式碼

    function Find(target, array) {
      let i = array.length - 1; // y坐标
      let j = 0; // x坐标
      return compare(target, array, i, j);
    }

    function compare(target, array, i, j) {
      if (array[i] === undefined || array[i][j] === undefined) {
        return false;
      }
      const temp = array[i][j];
      if (target === temp) {
        return true;
      }
      else if (target > temp) {
        return compare(target, array, i, j+1);
      }
      else if (target < temp) {
        return compare(target, array, i-1, j);
      }
    }
登入後複製

拓展:二分查找

二分查找的條件是必須有順序。

和線性表的中點值進行比較,如果小就繼續在小的序列中查找,如此遞歸直到找到相同的值。

    function binarySearch(data, arr, start, end) {
        if (start > end) {
            return -1;
        }
        var mid = Math.floor((end + start) / 2);
        if (data == arr[mid]) {
            return mid;
        } else if (data < arr[mid]) {
            return binarySearch(data, arr, start, mid - 1);
        } else {
            return binarySearch(data, arr, mid + 1, end);
        }
    }
登入後複製

以上是JavaScript中二維數組的查找(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!