博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在杨氏矩阵中查找一个数字是否存在
阅读量:7120 次
发布时间:2019-06-28

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

杨氏矩阵

有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的.

在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N);

数组:

1  2  3       1  3  4       1  2  3

2  3  4       2  4  5       4  5  6

3  4  5       4  5  6       7  8  9

1 #include
2 3 #define ROW 3 4 #define COL 3 5 6 int Find_num(int arr[ROW][COL],int num) 7 { 8 //从右上角开始查询 9 int row = 0;10 int col = COL - 1;11 while (row < ROW && col
num)14 {15 //查询左边的数16 --col;17 }18 if (arr[row][col] < num)19 {20 //查询下一行21 ++row;22 }23 if (arr[row][col] == num)24 {25 break;26 }27 }28 if (arr[row][col] == num)29 {30 return 1;31 }32 else33 {34 return 0;35 }36 }37 38 int main()39 {40 //要求时间复杂度小于=O(N),则可以利用杨氏矩阵的一些特性41 //如果将每一个都数都查找一遍,则最长时间应该为O(row * col)42 //如果利用每行从左到右是递增的,每列从上到下是递增的这一性质则为O(row + col)43 int arr[ROW][COL] = { 1,2,3,3,4,5,4,5,6};44 int num = 0;45 while (1)46 {47 printf("请输入您要查找的数字:\n");48 scanf("%d", &num);49 int find_num = Find_num(arr, num);50 if (find_num == 0)51 {52 printf("数字不存在!\n");53 }54 else55 {56 printf("数字存在!");57 }58 59 }60 61 return 0;62 }

 

转载于:https://www.cnblogs.com/cuckoo-/p/10381190.html

你可能感兴趣的文章
会计中的冲销和红票
查看>>
开启和关闭HBase的thrift进程
查看>>
swift学习_xcode6搭建
查看>>
MVC
查看>>
(寻找第K小的数&amp;&amp;寻找第K小的数的和)
查看>>
UVa 642 - Word Amalgamation
查看>>
Linux下编译安装qemu和libvirt
查看>>
VS NuGet使用
查看>>
转载:margin外边距合并问题以及解决方式
查看>>
手机摇一摇功能音量大小跟系统音量一致
查看>>
mysql用一个表更新另一个表的方法
查看>>
一键安装 redmine on windows 和发邮件设置
查看>>
Gradle笔记——构建基础
查看>>
空间矢量数据(.shp文件)之JAVA操作
查看>>
Spring 学习 3- AOP
查看>>
Android 音频 OpenSL ES 录音 采集
查看>>
[Node.js] Provide req.locals data though middleware
查看>>
ASP.NET MVC Model绑定(五)
查看>>
Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】
查看>>
宿主机mac os无法连接到虚拟机centos
查看>>