算法
RayfunC
一个懂艺术, 会写文的攻城狮
展开
-
Java快速排序
快排快速排序(Quicksort)是对冒泡排序的一种改进。由 东尼·霍尔(C. A. R. Hoare) 在1962年提出。在平均状况下,排序 n 个项目要 Ο(n log n) 次比较。在最坏状况下需要 Ο(n2) 次比较(不常见)特点通常明显比其他 Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分...原创 2019-01-24 09:07:40 · 421 阅读 · 0 评论 -
布隆过滤器原理
在日常生活中,我们经常要判断一个元素是否在一个集合中。比如在办公软件中,需要检查一个英语单词是否拼写正确(也就是要判断它是否在已知的字典中);在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上;在网络爬虫里,一个网址是否被访问过等等。最直接的方法就是将集合中全部的元素存在计算机中,遇到一个新元素时,将它和集合中的元素直接比较即可。一般来讲,计算机中的集合是用哈希表(hash table)来存储的。它...原创 2019-02-12 11:01:54 · 1233 阅读 · 0 评论 -
理解时间复杂度
本篇概念皆是关于时间复杂度首先需要了解一个概念时间频度一个算法中的语句执行次数称为语句频度或时间频度。记为 T(n)。一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多时间复杂度n 称为问题的规模,当 n 不断变化时,时间频度 T(n) 也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念一般情况下,...原创 2019-03-28 20:13:33 · 1361 阅读 · 0 评论 -
理解 o(1), o(n), o(logn), o(nlogn)
在描述算法复杂度时,经常用到 o (1), o (n), o (logn), o (nlogn) 来表示对应算法的时间复杂度,这里进行归纳一下它们代表的含义:这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O 后面的括号中有一个函数,指明某个算法的耗时 / 耗空间与数据增长量之间的关系。其中的 n 代表输入数据的量。比如时间复杂度为 O (n),就代表数据...原创 2019-04-29 07:37:24 · 1953 阅读 · 0 评论