day13_2_C语言_杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);

2.
杨氏矩阵
有一个二维数组.
数组的每行从左到右是递增的,每列从上到下是递增的.
在这样的数组中查找一个数字是否存在。
时间复杂度小于O(N);

数组:
1 2 3
2 3 4
3 4 5


1 3 4
2 4 5
4 5 6

1 2 3
4 5 6
7 8 9

代码1:

#include
int FindNum(int arr[3][3],int k,int row,int col)
{
    int x=0;
    int y=col-1;
    while(x<=row-1 && y>=0)
    {
    if(arr[x][y]>k)
    {
        y--;
    }
    else if(arr[x][y]


需求增加:不能在函数中打印,要在main函数输出下标

返回性参数解决函数返回多个值问题

由于函数中return不能同时返回两个参数

例如return x,y;

“,”是逗号表达式,返回的是y的值

解决方法:通过传递变量的地址,通过在函数内部解引用地址,将返回值赋给*地址,可以实现改变函数外部的变量

例如:

#include
void test(int* px,int* py)
{
	int a=2;
	int b=3;
	*px=a;
	*py=b;
}

int main()
{
	int x=0;
	int y=0;
	test(&x,&y);
	printf("x=%d y=%d",x,y);
	return 0;
}

 

代码2:

#include
int FindNum(int arr[3][3],int k,int* px,int* py)
{
    int x=0;
    int y=*py-1;
    while(x<=*px-1 && y>=0)
    {
    if(arr[x][y]>k)
    {
        y--;
    }
    else if(arr[x][y]

 

你可能感兴趣的:(C语言_家庭作业)