《算法图解》-1 算法简介

本文属于《算法图解》的读书笔记系列。先承认自己算法很烂,还是从小白做起吧。太高深的我充满了挫折感。

一 二分查找

    可能对于二分查找很多人都熟悉了,但是我忘了对数的了,作者 很及时的贴了概念。

    

  

代码如下:

  

public class BinaryTest {

	
	public static Integer bs(int nums[],int  item){
		if(nums == null){
			return  null;
		}
		int low = 0;
		int high = nums.length-1;
	   while(low<=high){
		   
		   int mid =(int) Math.floor( (low+high)/2) ;
		   int res = nums[mid];
		   System.out.println(mid+":"+res);
		   if(res == item){
			   return res;
		   }else if(res> item){
			   high= mid-1;		   
		   }else if(res< item){
			   low = mid+1;
		   }
		   
	   }		
		return null;		
		
	}
	
	public static void main(String[] args) {
		int nums[]  ={1,2,3,4,5,6,7,8,9,10};
		int  res =bs(nums,3);
		System.out.println("result:"+res);
	}

}

4:5
1:2
2:3
result:3

二 运行时间的大O标识符

  大O表示法指出了算法有多快。例如,假设列表包含n个元素。简 单查找需要检查每个元素,因此需要执行n次操作。使用大O表示法, 这个运行时间为O(n)。单位秒呢?没有——O表示法指的并非以秒为单位的速度。O表示法 让你能够比较操作数,它指出了算法运行时间的增速。

   为了便于理解,作者还用画图的方法介绍了16格子不同方式所用时间。

  大O表示方指出了最糟情况下的运行时间。

理解常见的大O运行时间:

O(log n),也叫对数时间,这样的算法包括二分查找。

O(n),也叫线性时间,这样的算法包括简单查找。

O(n * log n),这样的算法包括第4章将介绍的快速排序——一种速度较快的排序算法。

O(n2 ),这样的算法包括第2章将介绍的选择排序——一种速度较慢的排序算法。

O(n!),这样的算法包括接下来将介绍的旅行商问题的解决方案——一种非常慢的算法。

作者还画出了对应的曲线便于理解,

小结:

二分查找的速度比简单查找快得多。

O(log n)O(n)快。需要搜索的元素越多,前者比后者就快得越多。

算法运行时间并不以秒为单位。

算法运行时间是从其增速的角度度量的。

算法运行时间用大O表示法表示。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值