`

杨氏矩阵查找

 
阅读更多

问题描述:

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

例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字6,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。

1 2 8 9

 

2 4 9 12

 

4 7 10 13

 

6 8 11 15

 

 

杨氏矩阵的二分查找:

首先直接定位到最右上角的元素,如果比要找的数(6)大,则往左走,

如果比要找的数(6)小,则往下走,直到找到要找的数为止。

 

代码实现:

 

#include <iostream>
using namespace std;
/*
 * desc:杨氏矩阵二分查找
 * author: chenwq (irwenqiang@gmail.com) && July
 * version: 1.0 2012/05/22
*/

#define ROW 4
#define COL 4

bool Young(int array[][COL], int search){
	int i = 0;
	int j = COL - 1;

	int var = array[i][j];
	
	while(true){
		if(var == search)
			return true;
		else if(var < search && i < ROW - 1){
			var = array[++i][j];
			cout << "smaller " << var << "\n";
		}
		else if(var > search && j > 0){
			var = array[i][--j];
			cout << "larger " << var << "\n";
		}
		else
			return false;
	}
}

int main(){
	int array[ROW][COL] = {
	{1, 2, 8, 9}
	,{2, 4, 9 ,12}
	,{4, 7, 10, 13}
	,{6, 8, 11, 16}
	};

	Young(array, 6);
	/*
	for(int search = 1; search <= 15; search++){
		cout << search << "\n";
		if(Young(array, search))
			cout << "exists" << "\n";
		else
			cout << "not exists" << "\n";
	}
*/
	return 0;
}
分享到:
评论

相关推荐

    python实现杨氏矩阵查找

    本文实例为大家分享了python实现杨氏矩阵查找的具体代码,供大家参考,具体内容如下 问题描述: 在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数...

    杨氏矩阵查找的JS代码

    杨氏矩阵查找是一种在二维矩阵中查找特定数值的算法,其特点是将数字按照螺旋状顺序存储在矩阵中。这种查找方法适用于对角线方向上的数值查找,尤其在矩阵较大时,能够提供一定的优化。在给出的JS代码中,实现了一个...

    程序员编程艺术第一~二十七章集锦与总结(教你如何编程)by_July-带书签目录超清文字版

    《程序员编程艺术第一~二十七章集锦与总结》是由July编写的,旨在教导读者如何进行有效的编程。这本书涵盖了从编程基础到高级技术的广泛内容,对于任何希望提升编程技能的人来说,都是一份宝贵的资源。...

    二维数组中的查找杂谈1

    此外,还有一种被称为杨氏矩阵查找(Yang's Matrix Search)的方法,它利用副对角线(从右上角到左下角的线)上的元素特性。在副对角线上,一个元素既是其上方一整列的最大值,也是其左侧一整行的最小值。通过比较...

    Python数据结构.docx

    - **杨氏矩阵查找**:在有序的二维数组中查找特定值,可以采用二分查找策略进行优化。 - **去除列表中的重复元素**:展示了多种去重方法,包括使用集合、字典以及列表推导式。 - **链表操作**:链表成对交换节点...

    常见面试算法思路讲解

    #### 杨氏矩阵查找 杨氏矩阵是指行和列都是单调递增的矩阵。在这种矩阵中查找特定元素可以通过从右上角开始,逐步向左下方移动的方式高效完成。这种方式的时间复杂度为O(m+n),其中m和n分别是矩阵的行数和列数。 #...

    算法文档,来看看吧

    [原网页] 编程艺术第二十三~四章十一续:杨氏矩阵查找,倒排索引关键词Hash编码 [原网页] 六之再续:KMP算法之总结篇(12.09修订,必懂KMP) [原网页] Nginx源码剖析之内存池,与内存管理 [原网页] 程序员编程...

    程序员编程艺术第一 ~二十七章

    - **第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践** - 涉及高级数据结构的应用,如杨氏矩阵和倒排索引。 - **第二十五章:二分查找实现** - 分析了二分查找算法的实现细节,强调其正确性的...

    BAT常见的面试问题及其解答

    4. **杨氏矩阵查找** 题目描述:在一个按行和列递增排序的二维数组中查找一个整数。 解答:可以采用二分查找的方法,即从右上角开始,如果目标值小于当前位置的值,则向上移动,否则向左移动。这个算法被称为"Step...

    不粗的面试题

    - 查找元素:二分查找、循环升序数组查找、杨氏矩阵查找、跨行查找字符串、Trie树。 四、数据与计算机通信 - OSI模型:开放式系统互联通信参考模型。 - TCP协议:包括路径建立、数据传输、连接终止、拥塞控制、...

    程序员编程艺术 第一~二十七章集锦与总结

    15. **杨氏矩阵查找、倒排索引关键词Hash不重复编码实践** - **知识点**:矩阵搜索、倒排索引、哈希函数设计 - **内容概述**:介绍了杨氏矩阵的查找方法,并通过倒排索引的构建实例展示了关键词的哈希编码实现。这...

    程序员编程艺术第一~二十七章集锦与总结(教你如何编程)(by_July)定稿版.pdf

    - **第二十三、四章**:杨氏矩阵查找、倒排索引关键词Hash不重复编码实践 - **第二十五章**:二分查找实现 - **第二十六章**:基于给定的文档生成倒排索引的编码与实践 - **第二十七章**:不改变正负数之间相对...

    程序员编程艺术第一~二十七章集锦与总结(教你如何编程)(by_July)定稿版

    ##### 第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践 讨论了特殊矩阵的搜索算法以及高效的文本索引构建方法。 ##### 第二十五章:二分查找实现 特别提到了二分查找的实现细节,强调了其在面试...

    程序员编程艺术第一~二十七章集锦与总结(教你如何编程)

    - **第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践** - **知识点**:矩阵搜索算法、倒排索引构建。 - **应用场景**:搜索引擎、数据库索引优化等。 - **第二十五章:二分查找实现** - **...

    算法_三十七章集锦by_July

    10. 第二十三章和第二十四章主要讨论了杨氏矩阵查找和倒排索引关键词Hash不重复编码的实现。 11. 第二十五章对二分查找的实现进行了深入探讨,并指出这是90%的程序员都无法正确实现的算法之一。 12. 第二十六章到...

    程序员编程艺术--共二十七章-集锦与总结(教你如何编程)

    - **第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践** - 涉及特定数据结构的操作。 - 包含具体实例和代码实现。 - **第二十五章:二分查找实现** - 详细讲解二分查找的原理和实现细节。 - ...

    程序员编程艺术第一~二十七章集锦与总结

    - **第二十三、四章:杨氏矩阵查找,倒排索引关键词Hash不重复编码实践** —— 探讨了高级数据结构和搜索技术的应用。 - **第二十五章:二分查找实现** —— 详细介绍了二分查找的实现细节。 - **第二十六章:基于...

    程序员编程艺术

    - 第二十三章和第二十四章涉及杨氏矩阵的查找方法以及倒排索引关键词的Hash编码实践。 **11. 二分查找** - 第二十五章特别关注二分查找算法的正确实现,并指出大多数程序员在实现时常见的错误。 **12. 倒排索引...

Global site tag (gtag.js) - Google Analytics