2018-10-22算法图解阅读笔记

栏目: 编程工具 · 发布时间: 7年前

内容简介:阅读本书起源于左耳朵耗子的《左耳听风》 收益颇多,感谢老一辈程序员的无私分享。感谢~大O表示法是一种特殊的表示法,指出了算法的速度有多快。五种常见的大O运行时间

阅读本书起源于左耳朵耗子的《左耳听风》 收益颇多,感谢老一辈 程序员 的无私分享。感谢~

第一章 算法简介

  • 应用算法与暴力查询之间的效率差 主要以全遍历和二分查找法进行时间效率上的对比,引入算法重要性。

二分查找法

主要思路:假设已知要查找的数据元素的大小,并且输入的要查找的数据集有序。选取中间的数据元素与要查找的元素进行对比。

然后剔除无用的1/2检索集,到最后检索到目标元素返回目标元素,或者找不到返回空值。

实现代码

  • golang版本
func MidSearch(SearchArr [] int, needle, begin, end int, ) int {

for begin <= end {

mid := (begin+end)/2

if SearchArr[mid] == needle{

return mid;

}else if SearchArr[mid] > needle{

end = mid;

}else{

begin = mid+1;

}

}

return -1

}
  • php 版本
function midQuery($begin = 0, $end = 0, $search = array(), $want = null)

{

    while ($begin <= $end) {

        $mid = intval(($end + $begin) / 2);

        if ($search[$mid] == $want) {

            return $mid;

        } else if ($search[$mid] > $want) {

            $end = $mid + 1;

        } else {

            $begin = $mid;

        }

    }

    return false;

}
二分法查找的时间复杂度为O(log^2 n)

大O表示法

大O表示法是一种特殊的表示法,指出了算法的速度有多快。

五种常见的大O运行时间

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

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

  • O(n*log n) 这样的算法包括对数操作的 排序 算法,因为排序至少需要遍历所有的元素来排序所以,是N,操作的排序时间是对数时间所以是log n

  • O(n^2) N的平方,包括选择 排序算法 等。

  • O(n!) 这样的算法包括旅行商算法,这是一种非常慢的算法。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网站入侵与脚本攻防修炼

网站入侵与脚本攻防修炼

逍遥 / 2008-9 / 59.00元

《网站入侵与脚本攻防修炼》从“攻”、“防”两个角度,通过现实中的入侵实例,并结合原理性的分析,图文并茂地展现网站入侵与防御的全过程。全书共分8章,系统地介绍网站入侵的全部过程,以及相应的防御措施和方法。其中包括网站入侵的常见手法、流行网站脚本入侵手法揭密与防范、远程攻击入侵网站与防范、网站源代码安全分析与测试等。《网站入侵与脚本攻防修炼》尤其对网站脚本漏洞原理进行细致的分析,帮助网站管理员、安全人......一起来看看 《网站入侵与脚本攻防修炼》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具