上半年看了一点算法的内容, 做点笔记.
算法是 一组完成任务的指令. (任何daim代码片段都可视为算法.)
二分查找,其实我们生活中可能已经接触过,只不过不知道它的算法名称而已. 记得上学那会查英汉字典,但遇见一个不认识的单词的时候, 我们去查询英语单词时, 首先会根据英语单词的首字母,猜测它在字典的上半部分还是下半部分, 这么粗略的猜测, 其实就已经使用了二分查找.
二分查找, 还有一个hend很典型的游戏场景. 一个人 甲 想一个1~100的数字, 另一个人 乙 一定可以在7步之内找到这个数字.
具体步骤:
1, 乙 猜 50 , 甲 告知 50 是猜测的大了 还是 小了 .
2, 小了, 排除了一半的数字, 乙 猜测 75, 甲 告知75 是猜测的大了 还是 小了
3, 大了, 剩下的数字又排除一半, 每次都猜测的都是中间数字,从而每次都可以排除一半的数字. 接下来 乙猜测 63.
.................不管猜测的shi是哪一个数字, 都会在7次之内猜测到,每次猜测都会排除很多数字.
以上说明显示如果想要使用二分查找, 必须是一组有序的组合.
一般用大O表示法 讨论算法的运行时间. log n, 在算法中一般表示以2 为底.
二分查找查找法的 运行时间 表示为O(logn)