杨氏矩阵(在数组中查找数字)
有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。
要求:时间复杂度小于O(N);
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int Find(int arr[][3], int row, int col,int num){
int i = 0;//行
int j = col;//列
while (i < row&&j >=0){
if (num > arr[i][j]){
i++;
}
else if (num <arr[i][j]){
j--;
}
else{
printf("你找的数在%d行%d列\n", i+1, j+1);
return 1;
}
}
printf("数组中没你找的数字\n");
return 0;
}
int main(){
int num = 0;
printf("请输入你要查找的数:");
scanf("%d", &num);
int arr[3][3] = { { 1, 3, 5 },
{ 11,33,55 },
{ 111,333,555 }};
Find(arr, 3, 3, num);
system("pause");
return 0;
}