.有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于O(N);
1 2 3
2 3 4
3 4 5
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
char find_num(int arr[][4],int ROW,int LINE,int n)
{
int row = 0;
int line = LINE-1;
while(row<ROW,line>=0)
{
if(arr[row][line]==n)
return 'y';
else if(arr[row][line]<n)
row++;
else
line--;
}
return 'n';
}
int main()
{
int arr[4][4]={{1,2,3,4},{5,6,7,8},{6,7,8,9},{10,11,12,13}};
int num = 1;
char ret = find_num(arr,4,4,num);
if(ret=='y')
{
"在\n");
}
else
{
"不在\n");
}
"pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
char find_num(int arr[][4],int ROW,int LINE,int n)
{
int row = ROW-1;
int line = 0;
while(row>=0,line<LINE)
{
if(arr[row][line]==n)
return 'y';
else if(arr[row][line]<n)
line++;
else
row--;
}
return 'n';
}
int main()
{
int arr[4][4]={{1,2,3,4},{5,6,7,8},{6,7,8,9},{10,11,12,13}};
int num = 1;
char ret = find_num(arr,4,4,num);
if(ret=='y')
{
"在\n");
}
else
{
"不在\n");
}
"pause");
return 0;
}