有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于O(N);
数组:
1 2 3
2 3 4
3 4 5
代码
#include<stdio.h>
#include<stdlib.h>
int found(int a[][3], int b)
{
int i = 0;
int j = 2;
while ((i <= 2) && (i >= 0) && (j <= 2) && (j >= 0))
{
if (a[i][j] < b) i++;
else if (a[i][j] > b) j--;
else return 1;
}
return -1;
}
int main()
{
int arr[3][3]={ {1,2,3},\
{2,3,4},\
{3,4,5}};
int num = 0;
int re = 0;
printf("请输入要查找的数字-->:");
scanf("%d",&num);
re = found(arr,num);
if(re == 1)
{
printf("找到了\n");
}
else
{
printf("找不到\n");
}
system("pause");
return 0;
}