1. 程式人生 > >二維數組找最大值

二維數組找最大值

判斷 code RR 就是 AR 找最大值 return 並且 ret

在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。 請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 我得思路是從左上角開始,即arr[0][0],將這個整數和它相比,如果比它大,那麽將這個整數和arr[1][1]比 如果還大那麽繼續,如果小於arr[n][n],那麽去arr[n][n]這個元素的左面和上面找,如果有說明在這個數組中 沒有說明不在 這個想法首先只適用於方陣,並且查找效率並不是最好 答案的解法是從左下角開始 如果整數比這個元素大說明整數在這個元素的右邊, 如果整數比這個元素小說明整數在這個元素的左邊。 更新元素,重復上述步驟
如果這個元素已經到邊界並且出界了還沒找到,那麽就是沒有
int Search(int* arr,int x,int y,int num)
{
  //把二維數組當做一維數組處理
    if(arr == NULL || x <= 0 || y<= 0) return -1;
    int a = x-1;
    int b = 0;
    while(a >= 0 && a < x && b >=0 && b < y)
    {
        if(arr[a*y+b] > num)
        {
            a
--; } else if(arr[a*y+b] < num) { b++; } else return 1; } return -1; } int main() { int arr[5][5] = {1,55,79,82,88, 2,56,80,83,109, 3,57,81,84,110, 4,58,90,100,120,
5,59,99,111,122}; int index = 0; index = Search((int*)arr,5,5,89); printf("%d",index); return 0; }

二維數組找最大值