美文网首页
算法简单理解(一)

算法简单理解(一)

作者: xiaoChannel | 来源:发表于2018-07-20 16:45 被阅读0次

前言:
对于算法,本人开始其实蛮揪心的,只是知道它的作用和用法,对于算法没有什么深刻的理解,而且感觉算法,哇,好难的样子。😄 开始看的时候头都是懵的,后来发现,其实自己的切入点不对。现在整理下思路,希望也能帮助到你对算法的认识。

很多人可能跟我起初是一样的,学习了算法,而不知道什么时候合理的去选择使用一种算法。
所以,就以 Search 需求来理解认识算法.

介词

首先要了解一下算法里面的基本概念

N 代表数据量
大O符号 代表上界 (upper bound) -----代表最多最多会用到多少时间
大Ω符号 代表下界 (lower bound) -----代表最少最少会用到多少时间
大Θ符号 代表上界跟下界刚好相等
  • O(N) 在超过一定规模时候,基本上这个算法花费的时间 (或是空间) 会跟数据量 N 成正相关。也就是说如果 N 增加 3 倍,花费的时间/空间也会增加 3 倍。
  • 算法上我们通常只在乎 O (读音 Big O)。毕竟 Ω 这种最少需要花费多少时间/空间,并不是我们所关心,而我们需要关系的是 最多最多需要花费的时间
  • log 表达的相对增长率 。 --- 算法中的 log

常见的 Complexity

Complexity说明

  • O(1) 常数,花费时间跟数据量基本上无相关,也可以说在搜索只需要1次。比如hash算法。
  • O(lgN) 对数,花费时间跟数据量 N 取 Log2 正相关。比如二元搜索法
  • O(N) 花费时间跟数据量 N 成正相关。比如for循环
  • O(N lg N) 花费时间跟数据量 N * lg N 成正相关
  • (N2) 花费时间跟数据量 N 的平方成正相关
  • O(N3) 花费时间跟数据量 N 的三次方成正相关

具体的各种算法的表达式,后面会依次讲解

下面这张图是算法的对比,左边最少依次顺序

Complexity 的威力

  • 小数据量 用简单易懂的方法就好
  • 大数据量 用好的算法

下表来说,也许 O(lgN)比较难写,小数据量也比较慢。但是数据量超过一定程度之后,威力自然显现出来!

从表中我们可以看到,当数据量为1的时候,O(lgN) 的方法比较慢,但是当数据了越来越大的时候,它的威力越来越大,所以你要不要采用一个算法,完全是要看你的数量而定和你要解决的问题而定

相关文章

  • 算法简单理解(一)

    前言:对于算法,本人开始其实蛮揪心的,只是知道它的作用和用法,对于算法没有什么深刻的理解,而且感觉算法,哇,好难的...

  • 简单排序(选择排序、起泡排序和插入排序)使用详解

    简单排序算法 简单排序算法是一类算法,指那些直观、易理解的排序算法的总和。 到现在为止,我们已经讲了的三种排序算法...

  • 算法简单理解(二)

    Binary search,也可以说是 二元搜索法。它的Complexity:O(lgN) 它的先决条件是,一个 ...

  • 算法简单理解(三)

    Hash table Hash table它大概可以说是效能最快的搜索方法。 首先看下Hash table 最基本...

  • 简单理解“哈希算法”

    【本文由赞我(zaneds.com)独家冠名】 计算机密码学对区块链技术来说可谓是重中之重,我们在阅读各种区块链项...

  • EM算法简单理解

    样本数据中存在隐变量导致无法直接用极大似然估计求解参数的情况. 就是直接求解似然函数L(θ) = P(X,Z|θ)...

  • 排序算法详解

    排序算法是算法理论的基础,可以说只有理解了排序算法,才能更加深入地理解其他更加复杂的算法。简单的排序的算法包括选择...

  • 常见调度算法总结

    先来先服务算法 先来先服务算法是最简单的调度算法(FCFS),也叫先进先出算法(FIFO) 优点:易于理解并且易于...

  • 《算法4》2.1 - 选择排序算法(Selection Sort

    选择排序算法(Selection Sort)是排序算法的一种初级算法。虽然比较简单,但是基础,理解了有助于后面学习...

  • 简单理解Paxos算法(译)

    本文翻译自Quora上的一个回答 我认为在了解Paxos前,可以先谈谈其他解决共识问题的方法,在这个基础上再理解P...

网友评论

      本文标题:算法简单理解(一)

      本文链接:https://www.haomeiwen.com/subject/sdxqmftx.html