面试题4:二维数组的查找

news/2024/7/8 7:42:06

一、题目

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

二、算法分析

一个从左到右,从上到下递增的二维数组,我们可以从数组的左下角或者右上角开始遍历,这样当我们将numbert与遍历的元素做比较后(以右上角为例),如果比number大,剔除所在的列,如果比number小,则剔除所在的行,否则,找到了要查找的数字,查找结束

三、代码实现

#include<stdio.h>
#include<stdlib.h>
bool Find(int *matrix,int rows,int columns,int number)
{
	bool found=false;  //初始化为false

	if(matrix!=nullptr&&rows>0&&columns>0)
	{
		//右上角坐标
		int row=0;
		int column=columns-1;
		//遍历比较
		while(row<rows&&columns>=0)
		{
			if(matrix[row*columns+column]==number)
			{
				found=true;  //找到数值
				break;
			}
			else if(matrix[row*columns+column]>number)
				--column;   //剔除列
			else
				++row;      //剔除行
		}
	}
	return found;
}

四、测试及结果

4.1 测试代码

int main()
{
int matrix[4][4]={{1,2,8,9},{2,4,8,12},{4,7,10,13},{6,8,11,16}};
bool f=Find(*matrix,4,4,7);
if(ftrue)
{
printf(“true\n”);
}
if(f
false)
{
printf(“false\n”);
}
return 0;
}

4.2 测试结果

在这里插入图片描述


http://www.niftyadmin.cn/n/4058280.html

相关文章

6脉冲触发器脉冲缺失_脉冲袋式除尘器6个主要构件特点及5个常见问题及处理措施...

随着国家环保要求越来越高&#xff0c;对大气粉尘污染的严格管控&#xff0c;除尘设备在多领域得到大量应用&#xff0c;在防治粉尘污染、改善作业环境、实现烟气达标排放方面发挥着很大作用。本文分享脉冲袋式除尘器6个主要构件特点及5个常见问题及处理措施。1.脉冲袋式除尘器…

快速排序及五种优化(模板)

1、快速排序的基本思想&#xff1a; 快速排序排序使用分治的思想&#xff0c;通过一趟排序将待排序列分割成两部分&#xff0c;其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序&#xff0c;递归地以达到整个序列有序的目 2、快速排序…

SCAU 汇编语言 期末复习 (上)

第一章 1.储存单位 存储容量&#xff1a;bit 、Byte、 Word 1 kilobytes210bytes1024bytes 1megabyte(MB)220bytes 1gigabyte(GB)230bytes 1terabyte(TB)240bytes 1petabyte250bytes 1exabyte260bytes 1zettabyte270bytes 1yottabyte280bytes 2个字节&#xff1a; Word &#…

双光耦开关电源电路图_六款简单的开关电源电路设计原理图详解

简单的开关电源电路图(一) 简单实用的开关电源电路图调整C3和R5使振荡频率在30KHz-45KHz。输出电压需要稳压。输出电流可以达到500mA.有效功率8W、效率87%。其他没有要求就可以正常工作。简单的开关电源电路图(二)24V开关电源&#xff0c;是高频逆变开关电源中的一个种类。通过…

序列容器vector和迭代器

一、容器vector vector类模板提供了一种占用连续内存地址的数据结构。这使得它可以高效&#xff0c;直接的利用下标运算符[]访问vector中的任一元素&#xff0c;当一个vecto的内存空间耗尽时&#xff0c;它会分配一个更大的连续空间&#xff08;数组&#xff09;&#xff0c;把…

SCAU 软件工程 期末复习

软件发展阶段 程序设计阶段——50至60年代 程序系统阶段——60至70年代 软件工程阶段——70年代以后 软件工程的生命周期 1.需求分析&#xff08;RequirementsCapture&#xff09; 2.系统分析与设计&#xff08;SystemAnalysis and Design&#xff09; 3.系统实现&#…

年轻工程师怎样修炼成为“高手”

本人做过技术开发工作多年&#xff0c;从焊电路板的小工程师逐渐做到项目经理、研发经理&#xff0c;现在做到总工程师&#xff0c;作为工程师有亲身的感受&#xff0c;作为研发主管&#xff0c;对工程师的性格、心理和知识结构有非常深入的了解&#xff0c;现在把自己的一点感…

冒泡,选择,插入,希尔

/Files/fxllx82/Sorter.rar冒泡演示 转载于:https://www.cnblogs.com/fxllx82/archive/2008/07/17/1245347.html