二維陣列中的查詢 陣列

2021-08-21 04:09:10 字數 1139 閱讀 7291

題目描述

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

思想

①因為有序,所以二分查詢。

②從上到下,從左到右,都是遞增。但是把二維變成一維之後就不是遞增的了

②行進行二分查詢,確定在哪一行,再在行上確定是哪一列。

本來以為用非遞迴思想可以解決問題,但是會出現分叉,只能用遞迴。

情況一:在行上二分,若mid大於要查詢的值,則在前半部分查詢即可(當前行和下面的都大於該值)。

情況二:在行上二分,若mid小於要查詢的值,有三種情況,可以在上面,可以在當前行,可以在下面。(比如上圖,查詢數字3,因此這也是為什麼不能使用非遞迴的原因了),上面下面進行遞迴,當前行進行二次二分,確定具體位置,二次二分時可以先進行判斷減少不必要操作。

**

int findx(int target, vector> array,int low1,int high1,int x,int y,int flag)

int mid1=(low1+high1)/2;

if(array[mid1][0]==target) else if(array[mid1][0]>target)else

if(array[mid1][mid2]>target)else

}}//查詢失敗,上下遞迴

return findx(target,array,low1,mid1-1,x,y,flag)||findx(target,array,mid1+1,high1,x,y,flag);

}return false;

}bool find(int target, vector> array)

int y=array[0].size();

if(y==0)

int low1=0;

int high1=x-1;

return findx(target,array,low1,high1,x,y,0);

}

二維陣列中的查詢(陣列 查詢)

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路一 從左下角來看矩陣,向上數字遞減,向右數字遞增 從左下角開始查詢,當要查詢數字比左下角數字大時,右移 要查詢數字比左下...

二維陣列中的查詢 陣列

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。獲得二維陣列的行和列 區分好行和列,和下標的關係 我從右上角開始,下標為 0 列 1 如果目標數大於這個數字,...

陣列 二維陣列中的查詢

題目 在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。示例 現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,1...