`
rys5851968
  • 浏览: 155790 次
社区版块
存档分类
最新评论

算法设计:二维数组,横向纵向均递增,如何查找n是否在数组里??

 
阅读更多

这个题在笔试中经常会考到,这里做个总结。思路就是,从矩阵的最右上角的元素开始扫描a[i][j],如果要查找的数n小于该元素,则让i--,即往左移动一个数据再比较。如果n大于该数,则让j++,让原来的数往下移动一个数接着比较。 这里的设计思路就是充分利用了,数组横向纵向都递增的规律。而且巧妙的,一次只改变行数或列数,对应的列数或行数保持不变来进行搜索。 这和二维数组的螺旋打印异曲同工,待杂家有时间再总结螺旋打印问题。

时间复杂度最差为m+n,最好为m或者n。

程序如下:

#include  <iostream>
using namespace std;

#define N 10
#define M 10
int main()
{
	int a[N][M];
	int n;
	int i = 0, j = M-1;
	while(i<N && j>=0)
	{
		if(n < a[i][j])
			j--;
		else if(n > a[i][j])
			i++;
		else
		{
			cout<<"已找到!i = "<<i<<"j = "<<j<<endl;
		    return 0;
		}
	}
	return -1; //表示未找到

}


分享到:
评论

相关推荐

    labview学习笔记7:labview二维数组搜索匹配

    在LabVIEW编程环境中,二维数组的应用非常广泛,特别是在处理数据、图像分析以及复杂算法实现时。本学习笔记将深入探讨如何在LabVIEW中实现对二维数组的搜索匹配,特别是针对字符串类型的二维数组。由于LabVIEW内建...

    易语言学习进阶二维数组赋值

    二维数组在编程中是一种非常重要的数据结构,尤其在易语言中,它被广泛应用于各种算法和数据处理场景。本文将详细讲解易语言中二维数组的赋值方法,并通过实例源码帮助你深入理解这一概念。 二维数组,顾名思义,是...

    C#二维数组双线性插值算法

    C#的二维数组双线性插值算法。 用于二维数组的双线性插值算法,可分别设置长度和宽度。

    将二维数组进行线性插值

    总结来说,本案例涉及的核心知识点包括二维数组的管理和操作,以及一维线性插值算法的实现,这些都是在处理和分析数据时不可或缺的技能。通过理解这些概念,可以有效地处理和扩展数据集,满足各种分析需求。

    数据结构课程设计-二维数组

    在数据结构的学习中,二维数组是一个基础且重要的概念。它在C++编程中扮演着关键角色,尤其是在处理矩阵运算、图像处理以及各种算法实现时。本项目是针对数据结构课程设计,采用C++语言实现了一个二维数组的示例,...

    用指针实现二维数组的转置

    在C++编程中,二维数组是一种常见...通过理解指针的工作原理,以及如何在内存中表示和访问二维数组,我们可以有效地编写出高效的转置算法。这个过程不仅锻炼了我们的逻辑思维能力,还加深了对C++指针和数组操作的理解。

    二维数组求最大数

    这是一个经典的编程问题,旨在帮助学习者掌握二维数组的基本操作以及如何在数组中进行查找。 #### 二、基本概念 1. **二维数组**: 一种数据结构,可以视为由多个一维数组构成的数组。二维数组通常用来表示矩阵或...

    javascript构造二维数组

    在JavaScript中,构造二维数组是常见的操作,尤其是在处理表格数据、棋盘游戏或者复杂的矩阵运算时。二维数组是由多个一维数组组成的数组,每个一维数组可以看作是二维数组的一行。本篇将深入探讨如何在JavaScript中...

    Delphi中静态二维数组的使用

    本教程将深入探讨如何在Delphi中使用静态二维数组来实现九九乘法表的输出,这有助于理解Delphi中的数组概念以及基本的循环控制结构。 首先,我们需要了解什么是静态二维数组。在Delphi中,静态数组是在编译时声明并...

    二维数组分析.zip

    这些代码可能涉及初始化二维数组、遍历数组、进行矩阵运算(如加法、乘法)、查找特定值、或者实现某种特定算法。 `.dsp`和`.dsw`文件是Visual Studio的老式项目文件,它们存储了关于项目设置、编译选项和依赖关系...

    数码管(二维数组)_数码管_二维数组_七段数码管_

    总的来说,数码管与二维数组的结合是电子设计中的一个重要概念,特别是在嵌入式系统和物联网设备中。通过理解这段描述和相关标签,我们可以推断出该`.vi`文件涉及的内容,包括数码管的段码控制、二维数组的使用以及...

    实验四 二维数组基本操作的编程实现

    【二维数组基本操作】在本实验中,二维数组被用于实现一些基本的计算任务,如求阶乘和稀疏数组的压缩。二维数组是线性代数中的基本元素,尤其在处理矩阵运算时非常常见。它是一种数据结构,用于存储具有固定大小的...

    C++ 的二维数组应用习题

    二维数组可以看作是数组的数组,每一行可以视为一个一维数组,而多行组合在一起构成二维数组。 二维数组在C++中的定义方式和一维数组类似,只是在声明时需要指定两个维度的大小。例如,定义一个5行3列的二维数组...

    vb二维数组实现俄罗斯方块

    "vb二维数组实现俄罗斯方块"这个项目就是将经典游戏俄罗斯方块的逻辑构建在Visual Basic(VB)环境中,利用二维数组来存储和操作游戏中的方块。下面我们将详细探讨这个主题中的关键知识点。 首先,二维数组在VB中是...

    二维数组计算矩阵相加

    ### 二维数组与矩阵相加:深入理解与代码解析 #### 一、二维数组与矩阵的概念 在计算机科学中,二维数组是一种数据结构,它在内存中存储的是一个矩形表格形式的数据集合,通常用于表示矩阵。矩阵是数学中一种重要...

    matlab 三维 数组(含代码)

    - **矩阵运算**:如矩阵乘法(`*`)、转置(`.^T`)、求逆(`inv`)和特征值分解(`eig`)等,但这些通常需要将三维数组转换为适当的二维形式,因为MATLAB的这些函数通常针对二维矩阵设计。 - **索引和切片**:...

    用二C语言求二维数组鞍点

    二维数组在计算机科学中是表示多维数据结构的重要方式,特别是在C语言中,它被广泛用于处理矩阵和其他表格型数据。鞍点(Saddle Point)是指在一个矩阵中,某一个元素在同一行上比所有其他元素都大,而在同一列上比...

    根据二维数组的第一列数值大小排序

    在IT行业中,数组和排序是两个非常基础且重要的概念,广泛应用于各种算法和数据处理场景。下面我们将详细探讨这些知识点。 首先,二维数组是数组的一种扩展形式,它是由多个一维数组组成的,每个一维数组可以看作是...

    二维排序算法 选择排序 C#二维数组实现

    二维排序算法在计算机科学中是一种相对较少被提及的概念,因为大多数排序问题集中在一维数据上。然而,在处理矩阵或表格数据时,二维排序可能会变得重要。在这个案例中,我们讨论的是一个C#实现的选择排序算法,它...

    二维数组旋转.zip

    在编程领域,二维数组是一种常见的数据结构,它模拟了矩阵的概念,可以用来处理行和列的数据。本话题聚焦于如何使用C++语言实现一个二维数组的90度旋转操作,这是一个经典的算法问题,常见于面试中,以考察候选人的...

Global site tag (gtag.js) - Google Analytics