博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二维数组中的查找
阅读量:4593 次
发布时间:2019-06-09

本文共 967 字,大约阅读时间需要 3 分钟。

题目

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,

判断数组中是否含有该整数

思路

选取右上角元素,

元素大于Key-->剔除整列,
元素小于key-->剔除整行

#include 
#include
#include
using namespace std;template
class Find{ public: void find(vector
> v,T num);};template
void Find
::find(vector
> v,T num){ int row=v.size(); int r=0; int col=v[0].size(); int c=col-1; bool f=false; /* *对于row行 从上0开始递增,停止的条件是小于行的长度 *对于column列,从右边列的长度开始递减,停止的条件是大于等于零 *因为查询最右下角的元素时,第0列是允许的不能停止 */ while(r
=0) { if(v[r][c]==num) { f=true; break; } else if(v[r][c]>num)//行依次增大,列依次增大,要查找的数比这个数小,则肯定在左边 --c; else//否则,在下边 ++r; } if(f) cout<<" 查找成功,横坐标为:" <
<<" 纵坐标为:"<
<
>n; ifstream in("1.txt"); vector
> v(0,vector
(0)); v.resize(n); for(int i=0;i
>v[i][j]; } int num; cout<<" 请输入要查找的数值."<
>num; Find
f; f.find(v,num); return 0;}

 

转载于:https://www.cnblogs.com/tianzeng/p/10074007.html

你可能感兴趣的文章
Zookeeper注册节点的掉线自动重新注册及测试方法
查看>>
【SVM】清晰明了的理论文章
查看>>
C#学习笔记_02_数据类型
查看>>
Flutter实战视频-移动电商-40.路由_Fluro的全局注入和使用方法
查看>>
ddd
查看>>
Excel 2013中设置密码保护表格数据不被修改的方法
查看>>
Flash中的隔离沙箱
查看>>
即点即用:在 21 世纪交付 Office
查看>>
AJAX表单提交以及数据接收
查看>>
用tensorflow学习贝叶斯个性化排序(BPR)
查看>>
ADO.NET的记忆碎片(四)
查看>>
浏览器的渲染过程
查看>>
小组项目冲刺第三天每日站立会议
查看>>
k8s 基础 docker-ce 安装(注k8s 的安装需要用此版docker 否则会报错 )
查看>>
hdu 1422(环上最长连续子序列)
查看>>
poj 2125(最小割)
查看>>
Eclipse远程调试
查看>>
程序员面试准备
查看>>
C++ 字符串编程训练4
查看>>
Struts2单文件上传
查看>>