二维数组的查找


有一下一个二维数组


1 2 8 9 

2 4 9 12

4 7 10 13

6 8 11 15


此数组从左向右 从上到下是一个递增的过程 我们在查找的过程中可以划分区域查找 若某数大于要查找的数 则下一个查找区域应该在它上方或者是左方  某数小于要查找的数 则下一个要查找的区域应该在他的下方或者是右方  那么我们可以看到这样一种过程


若要于此数组中查找7


根据以上过程我们可以得出一个思路:从右上方开始找 若当前数大于所找数 则删去当前数所在的列 若当前数小于所找数则删去当前数所在的行


代码

bool Find(int* martix,int rows,int colums,int number)

{

    bool found = false;

   while(martix!=null&rows>0&&colums>0)

{

       int row = 0;

       int colum = colums - 1;

    while(row<rows&&colums>0)

{

    if(martix[row*colums+colum]==number)

{

    found = true;

    break;

}else if(martix[row*colums+colum>number)

{  

  --colum;

}else

{

 ++row;

}

}

return found;

 }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值