剑指offer面试题3 二维数组中的查找(c)

本文介绍了一种特殊的二维数组查找方法,该数组按排序方式排列。通过从右上角开始逐层剥离的方式,有效地减少了查找的时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

剑指offer面试题三:

 

关键在于这个二维数组比较特殊,都是按照排序后的摆放,因而在查找时可以采取从右上角开始一层层的剥离,节省查找时间

代码如下:

 1 #include<stdio.h>
 2 #define True 1
 3 #define False 0
 4 /**
 5 *二维数组找到
 6 */
 7 int Findnum(int *matrix,int rows,int colums,int findnum){
 8     int findflag = False;
 9         if(matrix!=NULL && rows>0 && colums>0){
10             //俩个辅助变量
11             int row = 0;
12             int colum = colums-1;
13             //开始找数字的循环
14             while(row<rows && colum>=0){
15                 if(matrix[row*colums+colum] == findnum){
16                     findflag = True;
17                     break;
18                 }
19                 else  if(matrix[row*colums+colum] > findnum)
20                         colum--;
21                 else
22                         row++;
23             }
24         }
25     return findflag;
26 }
27 void  main(void){
28     int num[][4] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}};
29     int flag;
30     flag = Findnum((int*)num,4,4,15);
31     if(flag){
32         printf("Find");
33     }
34     else
35         printf("Not Find");
36 
37 }

 

转载于:https://www.cnblogs.com/xsfelvis/p/4394605.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值