二维数组查找某数

来源:互联网 发布:it平面设计 编辑:程序博客网 时间:2024/06/05 14:20

题目描述:在一个二维数组中,查找某个数。这个二位数组的每一行和每一列都是递增的。
这里写图片描述

解决:查找都是从 右上角 的数(该数)开始查询。
如果查找的数==该数,则直接返回true;
如果查找的数 < 该数,则说明要查找的数在该数的左边,那么列数-1;
如果查找的数 > 该数,则说明要查找的数在该数的下边,那么行数+1.
直至查找到这个数。

代码:

bool find(int* matrix,int rows,int columns,int number){    if(matrix == NULL || rows<=0 || columns<=0)    {        return false;    }    int row = 0;    int column = columns-1;    while(row < rows && column >= 0)    {        if(matrix[row*columns + column] == number)        {            return true;        }        if(matrix[row*columns + column] < number)        {            row++;        }        else        {            column--;        }    }    return false;}

主函数:

int main(){    int rows = 4,columns=3;    int matrix[rows*columns] = {1,2,4,2,4,7,3,5,9,4,7,10};    if(find(matrix,rows,columns,10))    {        printf("find 10\n");    }    else    {        printf("not find 10\n");    }    if(find(matrix,rows,columns,20))    {        printf("find 20\n");    }    else    {        printf("not find 20\n");    }    return 0;}
0 0
原创粉丝点击