|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 二分法查找,进来帮帮我吧
我的收件箱(0)
共有
3051
人关注过本帖,
1
人收藏
标题:
二分法查找,进来帮帮我吧
只看楼主
加入收藏
beyondyf
等 级:
贵宾
威 望:
103
帖 子:3282
专家分:12654
注 册:2008-1-21
第
11
楼
收藏
得分:0
回复 10楼 蚕头燕尾
表示没看懂你想表达什么。数目标值的个数与排序有什么关系吗?这个东西的应用很广泛,稍微扩展一下就可以用于求集合中某个范围内的数据元素有多少,在统计学方面这非常常用。
还有,不是在二分法里加这个东西,而是在这个东西里加二分法,有序是应用二分法的前提。
如果学了二分法却只会在一堆数里找一个确定值,那这学的就太死板了。
听说过三分法么?
重剑无锋,大巧不工
2013-08-06 21:45
举报帖子
使用道具
赠送鲜花
蚕头燕尾
来 自:Gryffindo
等 级:
贵宾
威 望:
12
帖 子:734
专家分:1546
注 册:2013-3-24
第
12
楼
收藏
得分:0
#include<stdio.h>
int main()
{
int element_count(int * set, int len, int e);
int set[10]={1,2,3,4,5,5,5,5,8,9};
printf("%d",element_count(set,10,5));
}
int element_count(int * set, int len, int e)
{
int mid,low,high;
int num=0;
int i;
low=0;
high=len-1;
while (low<=high)
{
mid=(low+high)/2;
if(set[mid]==e)
{
for(i=low;i<=high;i++)
{
if(set[i]==e)
num++;
}
return num;
}
else if(set[mid]>e)
{
high=mid-1;
}
else
{
low=mid+1;
}
}
}
学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。
Black Cat Hello Tomorrow~
2013-08-06 21:53
举报帖子
使用道具
赠送鲜花
蚕头燕尾
来 自:Gryffindo
等 级:
贵宾
威 望:
12
帖 子:734
专家分:1546
注 册:2013-3-24
第
13
楼
收藏
得分:0
不知道B版主的问题是不是我写的代码的这个意思?
但是对版主说的三分法确实很好奇,让我先想想,
既然有二分,三分应该是同样道理的。。。。
我想想,想不出的话版主就再引导一下哈
学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。
Black Cat Hello Tomorrow~
2013-08-06 21:56
举报帖子
使用道具
赠送鲜花
蚕头燕尾
来 自:Gryffindo
等 级:
贵宾
威 望:
12
帖 子:734
专家分:1546
注 册:2013-3-24
第
14
楼
收藏
得分:0
略微思考了一下三分法的思路,感觉有点复杂,估计落实到代码上也不会简单到哪里去。。
从算法复杂度考虑,也不会在数量级上有所突破,估计也就是系数能有所改善,
要真是得写代码,还真是个细心的事儿,一时半会儿写不出,得好好思考着写,否则会出错。
学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。
Black Cat Hello Tomorrow~
2013-08-06 22:03
举报帖子
使用道具
赠送鲜花
beyondyf
等 级:
贵宾
威 望:
103
帖 子:3282
专家分:12654
注 册:2008-1-21
第
15
楼
收藏
得分:0
你的代码不满足要求
因为你只部分地使用了二分法,中间还插了一段顺序遍历。要求 必须/完全/只 使用二分法。
有兴趣你可以先查查三分法的相关资料。学基础算法,光知道某个算法怎么实现是不够的(甚至是没用的),更重要的是知道这个算法能用在哪里。
三分法也有它特定的应用环境。
重剑无锋,大巧不工
2013-08-06 22:12
举报帖子
使用道具
赠送鲜花
蚕头燕尾
来 自:Gryffindo
等 级:
贵宾
威 望:
12
帖 子:734
专家分:1546
注 册:2013-3-24
第
16
楼
收藏
得分:0
额,话说人呢??
感觉像是自己在玩单机似得。。。
好吧,不管了,版主看见之后发个话哈,我继续看那个三分法
刚刚百度了一下,果然不是什么省油的灯(至少对现在的我来说)。。。
学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。
Black Cat Hello Tomorrow~
2013-08-06 22:12
举报帖子
使用道具
赠送鲜花
beyondyf
等 级:
贵宾
威 望:
103
帖 子:3282
专家分:12654
注 册:2008-1-21
第
17
楼
收藏
得分:0
慢慢看吧,不要过早地下什么结论,你14楼那些结论也不对。你还不知道三分法能干什么呢。
我先歇了
[
本帖最后由 beyondyf 于 2013-8-6 22:20 编辑
]
重剑无锋,大巧不工
2013-08-06 22:17
举报帖子
使用道具
赠送鲜花
蚕头燕尾
来 自:Gryffindo
等 级:
贵宾
威 望:
12
帖 子:734
专家分:1546
注 册:2013-3-24
第
18
楼
收藏
得分:0
回复 17楼 beyondyf
鉴于我特差的理解能力,我想确认一下题目要求:
1、版主要求的是从“非降序”的数组里查找,也就是说可能是所有数组元素都一样的“不升不降”的那种数组,比如说一个有10个元素的数组,数值全部是5,然后查找5的个数,函数返回值就得是10,这样理解对吧。
2、完全用“二分法”,意思就是说,不得在任何地方,哪怕只剩三个待筛选的数值的时候,也不能使用其他查找算法是吧。
3、先理解三分法对这个题有帮助吗?
学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。
Black Cat Hello Tomorrow~
2013-08-06 22:24
举报帖子
使用道具
赠送鲜花
蚕头燕尾
来 自:Gryffindo
等 级:
贵宾
威 望:
12
帖 子:734
专家分:1546
注 册:2013-3-24
第
19
楼
收藏
得分:0
理解能力差真的不是我的错。。。
修炼不到家呐。。。
学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。
Black Cat Hello Tomorrow~
2013-08-06 22:28
举报帖子
使用道具
赠送鲜花
beyondyf
等 级:
贵宾
威 望:
103
帖 子:3282
专家分:12654
注 册:2008-1-21
第
20
楼
收藏
得分:0
回复 18楼 蚕头燕尾
1、对
2、是的
3、就是随口一说拓展一下大家的知识面,跟这个问题没什么关系
重剑无锋,大巧不工
2013-08-06 22:33
举报帖子
使用道具
赠送鲜花
57
2/6页
1
2
3
4
5
6
快速回复:
二分法查找,进来帮帮我吧
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016561 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved