简介

数组是一种比较简单的数据结构,它占据一块连续的内存并按照顺序存储数据。在创建时,需要先指定数组的容量大小,然后根据大小分配内存。因此数组的空间效率不是很好,经常会有空闲的区域没有充分利用。由于数组内存是连续的,所以可以用下标访问元素,时间效率比较高。

题目

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

1 2 8 9

2 4 9 12

4 7 10 13

6 8 11 15

查找数字7,返回true,查找5,返回false

分析:

程序实现

#include<iostream>#include<assert.h>usingnamespacestd;boolFind(int*a,introws,intcols,intelement){assert(a);//判断不为空assert(rows>0&&cols>0);//行和列不为空boolret=false;introw=0;intcol=cols-1;//第一行最右while(row<rows&&col>=0){if(a[row*cols+col]==element){ret=true;break;}elseif(a[row*cols+col]>element)//这个元素比这一列的这个元素小,说明在这一列的左边{--col;//缩小行的距离}else//这个元素比这一列的元素大,说明在这一行的下边++row;//向下}returnret;}

测试

voidtest(){inta[][4]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15};cout<<Find((int*)a,4,4,7);//1cout<<Find((int*)a,4,4,20);//0}

这样,就实现了在这个二维数组中查找一个元素的功能