在一个二维有序数组中,查找指定的数据是否存在
2012-01-06 12:02
423 查看
Say Given a 2d array where all the numbers in the array are in increasing order from left to right and top to bottom.
What is the best way to search and determine if a target number is in the array?
sample:
int a[][] = {
{1, 3, 5, 7, 9},
{2, 6, 11, 13, 15},
{4, 12, 17, 19, 21},
{8, 14, 18, 23, 25}//,
//{10,16, 20, 24, 26}
};
A: solution 1
从左下脚开始扫描需要查找的值value,
1. 如果 value == a[row][col],说明找到,返回
2. 如果value < a[row][col],那么row--
3. 如果value > a[row][col],那么col++
4. 如果一直到 row < 0 && col > max_col,说明没有找到,失败。
示例代码(passed testing)
View Code
What is the best way to search and determine if a target number is in the array?
sample:
int a[][] = {
{1, 3, 5, 7, 9},
{2, 6, 11, 13, 15},
{4, 12, 17, 19, 21},
{8, 14, 18, 23, 25}//,
//{10,16, 20, 24, 26}
};
A: solution 1
从左下脚开始扫描需要查找的值value,
1. 如果 value == a[row][col],说明找到,返回
2. 如果value < a[row][col],那么row--
3. 如果value > a[row][col],那么col++
4. 如果一直到 row < 0 && col > max_col,说明没有找到,失败。
示例代码(passed testing)
View Code
static boolean search2ndArrayData(int value) { int a[][] = { {1, 3, 5, 7, 9}, {2, 6, 11, 13, 15}, {4, 12, 17, 19, 21}, {8, 14, 18, 23, 25}//, //{10,16, 20, 24, 26} }; if (value < a[0][0] || value > a[3][4]) return false; int row = 3; int col = 0; while (col < 5 && row >= 0) { if (a[row][col] == value) { System.out.printf("find data %d row and column are [%d][%d]\n", value, row, col); return true; } else if (a[row][col] < value) col++; else row--; } return false; }
相关文章推荐
- 在一个循环有序数组里查找一个给定的值是否存在
- 查找一个数是否存在于一个数组中。该数组分两段有序,第一段的数都大于第二段的数。
- indexOf() 如何判断一个元素在指定数组中是否存在? 找出指定元素出现的所有位置? indexOf()方法 是正序查找,lastIndexOf()是倒叙查找
- 查找是否在数组中存在一个既定的值。
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- php数组函数序列之in_array() - 查找数组中是否存在指定值
- PHP检查一个数组内是否存在指定元素in_array
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- 一月十日练习习题,1数组数据存入字典并输出2降序 和倒叙 输出数组中内容3对字符串当中信息进行查找是否存在4 把数组当中信息按照中文排序
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);
- 判断一个数是否存在一个数组中,二分查找
- 【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数
- 给定一个数组,从中查找是否存在两个数的和等于一个给定的x
- 二维有序数组查找一个数
- 杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N)
- merge两个有序数组 & 查找一个有序数组中指定元素
- 有一个二维数组杨氏矩阵,数组的每行从左到右是递增的,每列从上到下是递增的,在这样的数组中查找一个数字是否存在
- 关于一个查找数组中是否存在某一个元素的问题
- 设定二维整数数组B[0..m-1,0..n-1]的数据在行,列方向上都按从小到大的顺序排序,且整形变量x中的数据在B中存在。设计一个算法,找出一对满足B[i][j]=x的I,j值,要求比较次数不超过m