时间复杂度 O(log n) 意味着什么?
写给小白的时间复杂度指南
查找算法的 Java 实现
查找算法的 Java 实现
两个有序数组合并成一个有序数组
用拉链法和线性探测法解决哈希冲突
用拉链法和线性探测法解决哈希冲突
红黑树那点事儿
红黑树的性质与简单实现
十张 GIFs 让你弄懂递归等概念
图像(包括动图)是传递信息的一种高效方式,往往能增强表象、记忆与思维等方面的反应强度。所谓一图胜千言,说的就是这个道理。 今天为大家整理了十张动图 GIFS,有助于认识循环、递归、二分检索等概念的具体运行情况。代码实例以 Python 语言编写。
从排序原理到MYSQL中的排序方式-gaopengtttt
如何给 100 亿个数字排序?
今天要给 100 亿个数字排序,100 亿个 int 型数字放在文件里面大概有 37.2GB,非常大,内存一次装不下了。那么肯定是要拆分成小的文件一个一个来处理,最终在合并成一个排好序的大文件。
七大查找算法
本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。
算法复杂度和大 O 表示法
算法复杂度是算法分析里的概念,是衡量计算资源消耗数量的指标。 算法的复杂度在理论上表示为一个函数:其定义域是输入数据的长度(通常考虑任意大的输入,没有上界),值域通常是执行步骤数量(时间复杂度)或者存储器位置数量(空间复杂度)。 本文通过一个 SICP 上的幂算法例子演示复杂度与算法的关系。
java位运算
2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,
3)在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100, 转换为十进制是12。 同理,>>表示右移. 右移一位表示除2. 位运算: …
在 JavaScript 中学习数据结构与算法
这是一本5万字符(中文约2w)的小书,可能需要几个小时阅读,需要几天或更多时间去消化。部分代码还不能正确地跑起来,有错别字,有不准确的概念…,但这不妨碍它作为你一个野生前端学习数据结构与算法的启蒙文章,期待你的一针见血、刀刀致命? 对任何专业技术人员来说,理解数据结构都非…
二分查找(oc/java/Python/scala)
查找过程演示: 在数组[130,150,170,190,210,230,250,270,290,310]中查找数字190,红色为二分线(折半线),灰色为查找区域,黑色为排除区域。 SYJ二分查找演示.gif 二分查找优缺点: 二分查找(折半查找)优点是比较次数少,查找速度快,平…
哈希分治法 – 统计海量数据中出现次数最多的前10个IP
关于分治法和MapReduce
B树的那点事儿
概述 B树(B-Tree)是一种自平衡的树,能够保证数据有序.同时它还保证了在查找、插入、删除等操作时性能都能保持在O(log n).需要注意的一点是,B-Tree并不是一棵自平衡的二叉查找树,它拥有多个分叉,且为大块数据的读写操作做了优化,同时它也可以用来描述外部存储(支持对保…
算法入门:堆排序
堆排序是比较基础的排序算法,也是我认为比较难的一种算法,因为它的流程比较多,理解起来不会像冒泡排序和选择排序那样直观。
要理解堆排序,需要先理解二叉树: 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right sub…
算法篇——堆排序
堆排序算法是由罗伯特·弗洛伊德(Robert W.Floyd)和威廉姆斯(J.Williams)在1964年共同发明,是一种精妙的排序算法。说说我对堆排序的理解,堆排序的时间复杂度是θ(nlogn),速度达到比较排序的下界,速度快那是不言而喻的。其基本思想是引入堆这种数据结构,…
常见排序算法 – 堆排序 (Heap Sort)
要了解堆首先得了解一下二叉树,在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
二叉树的每个结点至多只有二棵子树(不存在度大于 2 的结…
如何设计并实现一个线程安全的 Map ?(上篇)
Map 是一种很常见的数据结构,用于存储一些无序的键值对。在主流的编程语言中,默认就自带它的实现。C、C++ 中的 STL 就实现了 Map,JavaScript 中也有 Map,Java 中有 HashMap,Swift 和 Python 中有 Dictionary,Go 中…
常用排序图解
对于经常忘的人来说图片记忆和温习更快速~
Java 实现二叉树的构造以及遍历过程
对于数据结构中的二叉树,也许新手并不了解它的实现,以及前序中序后序遍历,本文就通过一个例子来简单得讲解了二叉树的这些知识
二叉排序树、红黑树、AVL 树最简单的理解
对红黑树的简单解析
浅析散列存储
说到散列,我们可能觉得是个新奇的事物,但实际上学过Java的人就会知道,在equal函数中会使用到hashcode,那就是所谓的散列码,而将对应的字转换成散列码的过程,我们称之为散列过程,这个过程函数被称之为散列函数。 理想情况下,不同的关键字的散列码是不会相同的。 1. 散列表…