美文网首页
10种算法

10种算法

作者: 小懒额 | 来源:发表于2018-06-21 09:13 被阅读0次
    1.树

    二叉树相对于数组来说,查找平均时间为 O(log n) ,最早的情况下为O(n),但是插入和删除速度更快。

    数组 二叉查找树
    查找 O(log n) O(log n)
    插入 O(n) O(log n)
    删除 O(n) O(log n)

    平衡的二叉树,即左右分支分布均匀,查找起来更快。如红黑树。
    B树是一种特殊的二叉树,数据库常用来存储数据。

    2.反向索引

    散列表的键为单词,值为包含指定单词的页面。这种把单词映射到包含它的页面的数据结构,就是反向索引。用于创建搜索引擎。

    3.傅里叶变换

    给定一首歌曲,傅里叶变换能够将其中的各种频率分离出来。傅里叶变换非常适合用于处理信号,可用来压缩音乐。

    4.并行算法

    当处理器的速度达到瓶颈时,就需要采用并行来加快处理速度。并行算法对于速度的提升是非线性的,需要注意两个点:
    (1)并行性管理开销,最后的合并需要时间。
    (2)负载均衡,均匀的分配工作。

    5.MapReduce

    分布式算法,MapReduce,映射函数和归并函数。先使用映射函数处理加快处理速度,然后把处理结果进行合并。

    6.布隆过滤器和 HyperLogLog

    用来判断某一个元素是否包含在某个集合中,如果这个集合非常大,对内存的占用就会很高,这时候就不能使用散列表。
    布隆过滤器是一种概率型数据结构,相比于散列表的绝对可靠性,它的可靠性是很可能。
    HyperLogLog近似的计算集合中不同的元素数,也不能给出正确答案,但占用内存空间很少。

    7. SHA 算法

    SHA 是一个散列函数,用于把一个字符串生成一个新的较短的字符串,可用于对文件进行这种处理,然后使用生成的字符串来比较,判断两个文件是否相同。
    由于 SHA 算法是单向加密的,可以使用对密码进行 SHA 算法,然后只验证处理后的字符串,这样就可以避免密码被窃取。

    8,局部敏感的散列算法

    SHA 算法在处理字符串时,如果字符串有微小的改动,比如改了一个字符串中的一个字母,这时候生成的新字符串和没有修改的结果相差会很大,这也保证了密码验证的安全性,不会被轻易破解。
    然而有些时候却需要这种敏感性,就是新生成的字符串要和原先的字符串修改程度大小有关系,这样在比较两个文件时,有利于判断相似度。Simhash 就可以用来实现这个效果。

    9.Diffie–Hellma

    Diffie–Hellman 密钥交换是一个特殊的交换密钥的方法。它是密码学领域内最早付诸实践的密钥交换方法之一。 DH可以让双方在完全缺乏对方(私有)信息的前提条件下通过不安全的信道达成一个共享的密钥。此密钥用于对后续信息交换进行对称加密.

    10.线性规划

    线性规划用于在给定约束条件下最大限度地改善指定的指标。简单的说,线性规划就是在给定限制的情况下,求解目标。

    相关文章

      网友评论

          本文标题:10种算法

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