二维数组中的查找
来源:互联网 发布:尼康关闭中国工厂知乎 编辑:程序博客网 时间: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
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 二维数组中的查找
- 霍纳法则(horner)
- tf.concat
- Java反射机制详解
- NYOJ64 鸡兔同笼
- 机器学习-周志华著-笔记
- 二维数组中的查找
- 堆排序
- YUM 软件管理
- Hibernate一对多关联操作
- Android事件处理
- poj 1990 MooFest(树状数组)
- 文件包含拿webshell
- JavaScript学习笔记38-简单的表单验证
- 5-2 决策树算法预测销量高低代码