二分法查找数字--算法分析和源码
来源:互联网 发布:淘宝网如何开店铺步骤 编辑:程序博客网 时间:2024/05/16 07:23
采用二分法查找数字是用的比较多的一种方法
其算法思想可以这样理解:
比如有一行数:1 6 9 10 15
要找到其中某一个数的位置,最简单的一种算法是穷举法,顾名思义,就是遍历这一行所有的数,比较,最后找到这个数,然后输出位置,如果到最后还是没有,就打印说没有找到该数
这里涉及到一个概念,就是算法时间复杂度(好像是这样称呼的)
穷举算法的复杂度是和n成一次函数的,所以复杂度是n,这样没有什么不好,但是该算法占用的时间比较长,所以效率比较低,程序的灵活性差
那么怎么办?--该问题即转化为如何避免过长的n呢?
可以用二分法的思想,注意:二分法只能用于序列有序的一列数
要查找的数每次和中间的这个数比较,如果是大于middle,则说明该数在后半段,如果小于,说明该数在前半段,这样就把穷举数列缩短了一半,同理在下一个数列中以此类推,都是一半一半进行比较比较,这样总是1/2,有n个1/2,所以时间复杂度是log2n,时间复杂度远远小于穷举算法
下面是部分代码:
int func(int a[],int n,int i,int j)
{
int mid=0;
mid=(int)((i+j)/2);
if(i<j)
{
if(a[mid] == n)
{
return mid+1;
}
if(a[mid]>n)
{
func(a,n,i,(mid-1));
}
else
{
func(a,n,(mid+1),j);
}
}
else
{
return 0;
}
//return (j+1);
/*if(i>j)
{
printf("no such number!\n");
return 0;
}*/
}
0 0
- 二分法查找数字--算法分析和源码
- 算法--二分法查找数字
- 查找算法 - 二分法查找
- 查找算法:二分法查找
- 二分法查找和原始算法查找效率对比
- C++ 二分法查找算法
- C++二分法查找算法
- 算法:二分法查找
- 算法--二分法查找
- 【基础算法】二分法查找
- 算法-二分法查找数据
- 算法之二分法查找
- 二分法查找算法
- Java 二分法查找算法
- 算法学习--二分法查找
- 二分法查找算法
- [Algorithm]二分法查找算法
- 查找算法--二分法
- 【iOS开发】 XML SAX与DOW的解析
- python print 追加写入文件中
- [cocos2dx笔记008]cocos2d 用luabridge手动绑定类
- Android_JNI的一个实例
- _raw_writel, writel_relaxed 和 writel的区别
- 二分法查找数字--算法分析和源码
- Servlet学习笔记(一)—— Myeclipse配置Tomcat
- 全栈JavaScript之路( 二十一)HTML5 scrollIntoView方法
- C++: selection sort
- MyEclipse内存不足问题
- 一个程序员的爱情表白书(娱乐一下)
- 7种对控件访问方式
- MFC对话框应用程序中谷歌CEF浏览器内核的使用
- 简单解决oracle 11g安装需要的libmpfr.so.1与libppl.so.7和libppl_c.so.2