二维数组中的查找
2015-09-15 17:11
302 查看
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
方法:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列(向左移);如果该数字小于要查找的数字,剔除这个数字所在的行(向下移)。如下所示:
![](https://img-blog.csdn.net/20150915170835527)
测试用例:
二维数组中包含查找的数字(查找的数字是数组中的最大值和最小值,查找的数字介于数组中的最大值和最小值之间)。
二维数组中没有查找的数字(查找的数字大于数组中的最大值,查找的数字小于数组中的最小值,查找的数字在数组的最大值和最小值之间但数组中没有这个数字)。
特殊输入测试(输入空指针)。
方法:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列(向左移);如果该数字小于要查找的数字,剔除这个数字所在的行(向下移)。如下所示:
bool Find(int* matrix, int rows, int columns, int number){ bool found = false; if (matrix != NULL && rows > 0 && columns > 0){ int row = 0; int column = columns - 1; while (row < rows && column >= 0){ if (matrix[row * columns + column] == number){ found = true; break; } else if (matrix[row * columns + column] > number){ -- column; } else { ++ row; } } } return found; }
测试用例:
二维数组中包含查找的数字(查找的数字是数组中的最大值和最小值,查找的数字介于数组中的最大值和最小值之间)。
二维数组中没有查找的数字(查找的数字大于数组中的最大值,查找的数字小于数组中的最小值,查找的数字在数组的最大值和最小值之间但数组中没有这个数字)。
特殊输入测试(输入空指针)。
相关文章推荐
- Redis中实现查找某个值的范围
- 批量文件查找替换功能的vbs脚本
- WinForm实现按名称递归查找控件的方法
- 一个用vbs查找硬盘所有分区中的指定程序的代码
- 浅析Node.js查找字符串功能
- WinForm自定义函数FindControl实现按名称查找控件
- Shell脚本学习指南之查找与替换介绍
- php实现指定字符串中查找子字符串的方法
- C#查找对象在ArrayList中出现位置的方法
- jquery 查找新建元素代码
- Oracle 查找与删除表中重复记录的步骤方法
- SQL Server根据分区表名查找所在的文件及文件组实现脚本
- PHP学习之字符串比较和查找
- python查找指定具有相同内容文件的方法
- 二叉查找树的插入,删除,查找
- php查找指定目录下指定大小文件的方法
- php查找字符串出现次数的方法
- php在数组中查找指定值的方法
- php实现在多维数组中查找特定value的方法
- PHP查找数值数组中不重复最大和最小的10个数的方法