二維陣列中的元素查詢(二分法的運用)

2021-10-10 05:00:17 字數 1086 閱讀 4572

1、vector知識

參考這篇博文,寫得不錯(

2、用vector來表示二維陣列

vectorarray(3);//定義了行數為3列數不定的二維陣列

array.size()//返回二維陣列的行數

array[0].size()//返回二維陣列第一行的列數

定義乙個行列固定的二維vector陣列

例:

vectorint>

> a;

a.resize

(m);

//行數為m

for(

int i=

0;i)//每行列數為n

a[i]

.resize

(n);

//之後可採用遍歷的方式為a陣列賦值

int t;

for(

int i=

0;i)

3、二分法查詢

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

技巧:暴力匹配當然可以解決問題,但是這道題如果用暴力求解就沒啥意思了!技巧就是中位值的選取方法。中位值的位置要選在這個二維陣列的右上角元素或者左下角元素。

分析

當目標值比中位值大時,結合題目條件(從左到右遞增),則第一行元素都不符合,所以中位值元素自動下移一位;

同理,當目標值比中位值小時,結合題目條件(從上到下遞增),最後一列元素可以排除,此時,中位值自動向左移動一位;

當目標值等於中位值時,直接輸出。

摘自牛客網

class

solution

else

if(target > array[r]

[c])

else

}return

false;}

};

二維陣列中的查詢 之 二分法

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如下面的二維陣列就是每行 每列都遞增排序。如果在這個陣列中查詢數字7,則返回true 如果查詢數字5,由於陣列不含有該數字,則返回f...

2014 8 25二分法,二維陣列

1 二分法2 假設頂乙個已經排好序的陣列,使用者輸入乙個數,找出這個數的位置,沒有則返回空 3int nums new int 10 4int a 0,b nums.length 1 zj 5 console.writeline 請輸入要查詢的數 6int n convert.toint32 con...

陣列元素的查詢 二分法查詢

1 2 二分法查詢演算法是基於排序的基礎之上 類庫中好像有 3 利用二分法對陣列元素程序查詢111 下標為0 222,333,444,555,666,777,888 4 查詢原理 5 找666這個元素的下標,此元素下標是5.6 陣列元素的下標為0 7 7 通過二分法查詢 0 7 2 中間元素下標 3...