有一个二维数组
数组的每行从左到右是递增的,每列从上到下是递增的
在这个数组中查找一个数字是否存在
时间复杂度小于O(N)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void find(int arr[4][4], int k, int row, int col)
{
int x = 0; //行
int y = col - 1; //列
while ((x <= 3) && (y >= 0))
{
if (arr[x][y] == k)
{
printf("找到了!\n %d %d", x, y);
break;
}
else if (arr[x][y]<k)
x++;
else
y--;
}
if ((x>3) || (y<0))
{
printf("找不到了\n");
}
}
int main(){
int arr[4][4] = { 1, 2, 8, 9,
2, 4, 9, 12,
4, 7, 10, 13,
6, 8, 11, 15 };
int k;
printf("please input a num:\n");
scanf("%d", &k);
find(arr, k, 4, 4);
system("pause");
return 0;
}