矩阵找数--一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高。

本文探讨了如何在一个递增的m*n矩阵中高效地判断给定数字x是否存在。通过与矩阵右上角的数字比较,可以逐步缩小查找范围,提高查找效率。这种方法避免了简单循环带来的低效问题。
摘要由CSDN通过智能技术生成

这里写图片描述
思路一:循环找
效率差

思路二:
因为从左到右从上到下都是递增的。
所以用数字和右上角的数字比较
如果要找的数字是7,则数字先与9比。比9小说明在9的左侧。
再与8比,比8小,说明在8的左侧。
与2比,比2大,在2的下侧。
比4大,在4的下侧。

#include <stdio.h>

bool Find(int *arr,int row,int col,int num)
{
     bool isFound = false;

     if(arr != NULL && row > 0 && col > 0)
     {
          int CurRow = 0;
          int CurCol = col-1;
          while(CurRow < row && CurCol >= 0)
          {
              //如果找到了,直接返回
               if(arr[CurRow * col + CurCol] == num)
               {  
                    isFound = true;
                    break;
               }
               //如果右上角数字大于num,在右上角数字的左边
               else if(arr[CurRow * col 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值