码迷,mamicode.com
首页 > 编程语言 > 详细

算法学习一~分治法~二分查找,快速的找~

时间:2014-11-14 22:30:25      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   sp   for   div   问题   log   

现在编程也算是走上门了,但是没有把算法掌握下来只能说自己还是门外汉,所以以后我们就开始努力的学习算法,现在把自己每天的学习分享在这里希望大家能喜欢,并且我也要在这里整理我一天的学习和思路,。

二分查找。。大家经常需要在一个数组中寻找某个值。如果是一个已经拍好序的话那么可以很快的找到。我们考虑下暴力查找,就是a【n】,中找一个m,那么最好时是o(1),最差时是0(n),最终平均情况就是长度n/2。这样的时间复杂度不算很高但是可以改进到logn的级别。

 1 #include<stdio.h>//算法二分查找
 2 int main()
 3 {
 4 int a[100000],i,x;
 5 while(~scanf("%d",&x))
 6 {
 7 for(i=0;i<100000;i++)//对数组赋值。要已经排好序的
 8     a[i]=i;
 9 int left=0,right=i-1;//左右值=i
10 int middle=0;
11 while(left<=right)//算法在左小于右的时候
12 {
13     middle=(left+right)/2;//从中间开始找
14     if(x==a[middle])break;//结束循环已经找到
15     if(x>a[middle])left=middle+1;//每次砍掉一半
16     else right=middle-1;
17 }
18 printf("%d\n",middle);//输出
19 }
20 }

这里的思路很简单就是从判断中间的元素是不是要找的元素,之后就判断大小如果x比中间值小则在左到中间值之间查找,如果比中间值大则在中间值和右边开始判断。然后就是不断的循环当然这里也可以用递归。。问题很简单我就不多说废话了。,。。

 

算法学习一~分治法~二分查找,快速的找~

标签:style   blog   io   color   sp   for   div   问题   log   

原文地址:http://www.cnblogs.com/luyi14/p/4098242.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!