得分:20

根据行列递增的特点,逐步缩小范围,首先在首行和首列中查找小于或等于查找值的行或列,舍去大的部分,再在尾行和尾列中查找大于或等于查找值的行或列,舍去小的部分,循环处理,直到剩下一个元素,比对。

#include

int data[5][6] =

{

{1,   4,  7, 11, 15,25},

{2,   5,  8, 12, 19,28},

{3,   6,  9, 16, 22,31},

{10, 13, 14, 17, 24,32},

{18, 21, 23, 26, 30,39}

};

int   m=5,n=6;

int main()

{

int x;

int f(int);

while(x!=-1)

{

scanf("%d",&x);

printf("%s\n",(f(x)==1)?"true":"false");

}

}

int f(int x)

{

int si,sj,ei,ej;

int s,e,k;

si=0;

sj=0;

ei=m-1;

ej=n-1;

while((ei-si>0)|(ej-sj>0))

{

if(data[si][sj]>x) return 0;

//用二分查找在首行中查找<=x的列号

s=sj;

e=ej;

if(data[si][e]<=x) s=e;

while(e-s>1)

{

k=s+(e-s)/2;

if (data[si][k]>x) e=k;

else s=k;

}

ej=s;//更改尾列下标,缩小范围

//用二分查找在首列中查找<=x的行号

s=si;

e=ei;

if(data[e][sj]<=x) s=e;

while(e-s>1)

{

k=s+(e-s)/2;

if (data[k][sj]>x) e=k;

else s=k;

}

ei=s;//更改尾行下标,缩小范围

if(data[ei][ej]

//用二分查找在尾行中查找>=x的列号

s=sj;

e=ej;

if(data[ei][s]>=x) e=s;

while(e-s>1)

{

k=s+(e-s)/2;

if (data[ei][k]

else e=k;

}

sj=e;//更改首列下标,缩小范围

//用二分查找在尾列中查找>=x的行号

s=si;

e=ei;

if(data[s][ej]>=x) e=s;

while(e-s>1)

{

k=s+(e-s)/2;

if (data[k][ej]

else e=k;

}

si=e;//更改首行下标,缩小范围

}

return data[si][sj]==x;//此时si=sj,ei=ej

}

c语言用二维数组查找负数,[抄道题] 在二维数组中找某数相关推荐

  1. python查找字符串数量_python如何实现从字符串中找出字符1的位置以及个数的示例...

    #!/bin/env python #-*- coding:utf-8 -*- # """ 用enumerate将string中的1都找出来, 用enumerate实现: ...

  2. 从2个有序数组中找第k小那个数

    系列文章目录 提示:AC==accepted,即LeetCode上提交代码通过,我刷题的代码用的是java,但是C++一个道理,算法思想一样,而且c++和java非常类似,python需要自己写,但是 ...

  3. 计算机二级c语言小抄,2017年电大 全国计算机等级考试二级c语言题库新版小条小抄.doc...

    2017年电大 全国计算机等级考试二级c语言题库新版小条小抄 第1套 给定程序中,函数fun的功能是根据形参i的值返回某个函数的值.当调用正确时,程序输出: xl=5.000000, x2=3.000 ...

  4. 二维数组查找数字--C语言

    其实遍历数组依次比较也可以,这里我们讨论有序二维数组查找. 问题:我们知道数组是从左至右,从上到下递增.输入数字,判断数组里面是否含有该整数. 具体怎么判断分析不再赘述,(<剑指offer> ...

  5. c语言暴力求解法二维数组比较,【算法】搜索二维矩阵 暴力解法二分法 4种语言...

    编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1:输入:matrix = ...

  6. python 二维数组长度_剑指offer二维数组中的查找【Java+Python】

    点击上方"蓝字",关注了解更多 二维数组中的查找 1. 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序 ...

  7. php数组制作查找筛选页面,php利用array_search与array_column实现二维数组查找

    在看php手册数组函数时,看到了一个高赞的用户回答传送门,利用array_search与array_column实现二维数组查找,不用自己写个循环,减少工作量.<?php $userdb = a ...

  8. c语言二维数组输入数据,c语言编写程序,把下面的数据输入到一个二维数组中:...

    c语言编写程序,把下面的数据输入到一个二维数组中: 答案:3  信息版本:手机版 解决时间 2019-10-07 01:08 已解决 2019-10-06 03:19 1. 编写程序,把下面的数据输入 ...

  9. 算法013:二维数组中的查找-在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断中是否存在

    题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.示例: 现有 ...

最新文章

  1. 《中国制造业走向2025》从构建新价值网络开始
  2. 计算机相关冷门专业,211名校冷门专业和双非计算机专业,该如何选择?过来人告诉你...
  3. CEO 赠书 | 讲述创新背后不为人知的故事,改变世界的 Ta 们做对了什么?
  4. php正则重复匹配,php – 用于匹配任何长度的所有重复子串的正则表达式
  5. boost::multiprecision模块测试 cpp_dec_float_50 是否符合我们的 概念要求
  6. 批评代码而不是人!15年程序员的职场箴言
  7. P2467-[SDOI2010]地精部落【dp】
  8. 控制台出现Failed to bind properties under ‘spring.datasource‘ to javax.sql.DataSource
  9. Spring mvc 响应字符串
  10. @suppressWarnings解释
  11. 1135(重、错)Is It A Red-Black Tree
  12. UE4 植被工具的使用
  13. 中国电信5G技术承载网络
  14. 奔图打印机显示未连接_奔图打印机常见故障及解决方法
  15. eclipse背景设置什么颜色缓解眼睛疲劳
  16. Centos7下Docker1.12和Docker-CE 17.12添加镜像加速器的区别
  17. unity沙子堆积_Unity Shader 之 简单实现沙漠干旱热浪的效果
  18. 纯代码实现WordPress文章部分内容关注微信公众号后可见
  19. swiper轮播图鼠标移入暂停有延时的问题
  20. visio的细的箭头

热门文章

  1. 视频教程-软考系统集成项目管理工程师视频教程(中)-软考
  2. ruby-to_ary
  3. 人类的15个欲望与游戏设计[转收藏]
  4. 剪辑技巧,全部视频添加封面图片后保存在哪
  5. 微软输入法 ——当前时间 快捷键
  6. 极光尔沃A6-3d打印机体验
  7. 演讲如何克服紧张情绪
  8. 机械革命 安装Ubuntu16+win10双系统 配置GTX960m显卡
  9. Java学习必备书籍推荐终极版!
  10. Android Studio代码迁移问题小汇总