c语言用二维数组查找负数,[抄道题] 在二维数组中找某数
得分: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语言用二维数组查找负数,[抄道题] 在二维数组中找某数相关推荐
- python查找字符串数量_python如何实现从字符串中找出字符1的位置以及个数的示例...
#!/bin/env python #-*- coding:utf-8 -*- # """ 用enumerate将string中的1都找出来, 用enumerate实现: ...
- 从2个有序数组中找第k小那个数
系列文章目录 提示:AC==accepted,即LeetCode上提交代码通过,我刷题的代码用的是java,但是C++一个道理,算法思想一样,而且c++和java非常类似,python需要自己写,但是 ...
- 计算机二级c语言小抄,2017年电大 全国计算机等级考试二级c语言题库新版小条小抄.doc...
2017年电大 全国计算机等级考试二级c语言题库新版小条小抄 第1套 给定程序中,函数fun的功能是根据形参i的值返回某个函数的值.当调用正确时,程序输出: xl=5.000000, x2=3.000 ...
- 二维数组查找数字--C语言
其实遍历数组依次比较也可以,这里我们讨论有序二维数组查找. 问题:我们知道数组是从左至右,从上到下递增.输入数字,判断数组里面是否含有该整数. 具体怎么判断分析不再赘述,(<剑指offer> ...
- c语言暴力求解法二维数组比较,【算法】搜索二维矩阵 暴力解法二分法 4种语言...
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1:输入:matrix = ...
- python 二维数组长度_剑指offer二维数组中的查找【Java+Python】
点击上方"蓝字",关注了解更多 二维数组中的查找 1. 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序 ...
- php数组制作查找筛选页面,php利用array_search与array_column实现二维数组查找
在看php手册数组函数时,看到了一个高赞的用户回答传送门,利用array_search与array_column实现二维数组查找,不用自己写个循环,减少工作量.<?php $userdb = a ...
- c语言二维数组输入数据,c语言编写程序,把下面的数据输入到一个二维数组中:...
c语言编写程序,把下面的数据输入到一个二维数组中: 答案:3 信息版本:手机版 解决时间 2019-10-07 01:08 已解决 2019-10-06 03:19 1. 编写程序,把下面的数据输入 ...
- 算法013:二维数组中的查找-在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断中是否存在
题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.示例: 现有 ...
最新文章
- 《中国制造业走向2025》从构建新价值网络开始
- 计算机相关冷门专业,211名校冷门专业和双非计算机专业,该如何选择?过来人告诉你...
- CEO 赠书 | 讲述创新背后不为人知的故事,改变世界的 Ta 们做对了什么?
- php正则重复匹配,php – 用于匹配任何长度的所有重复子串的正则表达式
- boost::multiprecision模块测试 cpp_dec_float_50 是否符合我们的 概念要求
- 批评代码而不是人!15年程序员的职场箴言
- P2467-[SDOI2010]地精部落【dp】
- 控制台出现Failed to bind properties under ‘spring.datasource‘ to javax.sql.DataSource
- Spring mvc 响应字符串
- @suppressWarnings解释
- 1135(重、错)Is It A Red-Black Tree
- UE4 植被工具的使用
- 中国电信5G技术承载网络
- 奔图打印机显示未连接_奔图打印机常见故障及解决方法
- eclipse背景设置什么颜色缓解眼睛疲劳
- Centos7下Docker1.12和Docker-CE 17.12添加镜像加速器的区别
- unity沙子堆积_Unity Shader 之 简单实现沙漠干旱热浪的效果
- 纯代码实现WordPress文章部分内容关注微信公众号后可见
- swiper轮播图鼠标移入暂停有延时的问题
- visio的细的箭头