Q3:二维数组中的查找
2016-07-01 10:50
141 查看
publicclass Q3 {
/**
* 1、数组基础:数组是一种简单的数据结构,占据一块连续的内存并按照顺存储数据。创建数组时,先要指定数组的大小,然后根据大小分配内存。 即使为数组存储一个数字,也要预先分配内存。这样会导致:数组的空间效率比较低,使得空闲 的区域得不到很好的利用。
* 2、由于内存联系,因此数组可以再O(1)时间读/写元素,时间效率较高。
* 3、题目:二维数组中的查找
* 4、题目说明:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的二维数组和一个整数,判断数组中是否含有该整数。
* 5、题目分析:如下数组查找元素7,返回true,查找元素5返回false
*1 2 8 9
*2 4 9 12
*4 7 10 13
*6 8 11 15
*
从左上角的数字开始判断,1)左上角的数字等于要查找的数组,则结束;
* 2)若大于要查找的数字,删除一列;
* 3)若小于要查找的数字,删除一行。
*/
publicstatic
void main(String[] args) {
int[][] data =new
int[4][4];
data[0][0]=1;
//........输入数组即可.......
System.out.println(findNum(data, 7));
}
publicstatic
boolean findNum(int array[][],int number){
//判断数组是否合法
if(array ==null){
returnfalse;
}
int column = array[0].length-1;//求列的数目,从最大列开始
int cow = 0;//记录行的数目,从第0行开始
while(cow < array.length && column >= 0){
//左上角的数字正好是要查找的数字number
if(array[cow][column] == number){
returntrue;
}
//左上角额数字小于要查找的数字number,删除一行
if(array[cow][column] < number){
cow++;
}
//左上角的数字大于要查找的数字number,删除一列
if(array[cow][column] > number){
column--;
}
}
returnfalse;
}
}
/**
* 1、数组基础:数组是一种简单的数据结构,占据一块连续的内存并按照顺存储数据。创建数组时,先要指定数组的大小,然后根据大小分配内存。 即使为数组存储一个数字,也要预先分配内存。这样会导致:数组的空间效率比较低,使得空闲 的区域得不到很好的利用。
* 2、由于内存联系,因此数组可以再O(1)时间读/写元素,时间效率较高。
* 3、题目:二维数组中的查找
* 4、题目说明:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的二维数组和一个整数,判断数组中是否含有该整数。
* 5、题目分析:如下数组查找元素7,返回true,查找元素5返回false
*1 2 8 9
*2 4 9 12
*4 7 10 13
*6 8 11 15
*
从左上角的数字开始判断,1)左上角的数字等于要查找的数组,则结束;
* 2)若大于要查找的数字,删除一列;
* 3)若小于要查找的数字,删除一行。
*/
publicstatic
void main(String[] args) {
int[][] data =new
int[4][4];
data[0][0]=1;
//........输入数组即可.......
System.out.println(findNum(data, 7));
}
publicstatic
boolean findNum(int array[][],int number){
//判断数组是否合法
if(array ==null){
returnfalse;
}
int column = array[0].length-1;//求列的数目,从最大列开始
int cow = 0;//记录行的数目,从第0行开始
while(cow < array.length && column >= 0){
//左上角的数字正好是要查找的数字number
if(array[cow][column] == number){
returntrue;
}
//左上角额数字小于要查找的数字number,删除一行
if(array[cow][column] < number){
cow++;
}
//左上角的数字大于要查找的数字number,删除一列
if(array[cow][column] > number){
column--;
}
}
returnfalse;
}
}
相关文章推荐
- [从头读历史] 第279节 诗经 豳风
- CountDownLatch
- 复习spring碰到的一些小知识
- BroadcastReceiver 广播接收者
- Android 支付宝以及微信支付快速接入流程
- 设计模式C++实现(5)——原型模式、模板方法模式
- 160701 iconfont的使用
- jquery实现上一页 下一页
- 测试Css3跟html5支持度的网址
- ICMP Flood攻击
- 让UITableView的section header view不悬停的方法
- iOS --TableView与NavigationBar中间多出空白间隔
- 指针数组和数组指针
- The purpose of learning Japanese
- perl 异步请求和JS对比
- Linux 命令用法
- 设计模式C++实现(4)——单例模式
- instanceof 与isAssignableFrom
- 生日悖论
- C#新手入门代码 创建一个Int类型的数组