二维数组中的查找

来源:互联网 发布:尼康关闭中国工厂知乎 编辑:程序博客网 时间:2024/05/29 11:49

一、题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

二、代码:

#include<iostream>using namespace std;#include<cassert>bool Find(int*  arr,int row,int col,int n){     int row1=0;     int col1=0;     assert(arr);     col1=col-1;     if(arr[row*col-1]<n||arr[0]>n)//如果这个数没在数组表示的值得范围     {         return false;     }     else//在数组值得范围内,进行查找     {         while (row1<row&&col1>=0)         {             if (arr[row1*col+col1]<n)             {                 row1+=1;             }             else             {                 col1-=1;             }             if (arr[row1*col+col1]==n)             {                 return true;             }         }         return false;     }}

测试:

void Test(){     int* p=NULL;     int arr[4][4]={ {1,2,8,9},                    {2,4,9,12},                    {4,7,10,13},                    {6,8,11,15}};    //二维数组中包含查找数字    cout<<Find((int*)arr,4,4,7)<<endl;//最大值最小值之间    cout<<Find((int*)arr,4,4,1)<<endl;//最小值    cout<<Find((int*)arr,4,4,15)<<endl;//最小值    //二维数组中不包含查找的数字    cout<<Find((int*)arr,4,4,0)<<endl;//小于最小值    cout<<Find((int*)arr,4,4,16)<<endl;//大于最大值    cout<<Find((int*)arr,4,4,3)<<endl;//在最大值和最小值之间没有这个数字    //cout<<Find(p,4,4,1)<<endl;//传入空指针}int main(){    Test();    return 0;}

三、运行结果:
这里写图片描述

0 0
原创粉丝点击