算法-数据结构

WindChaser 2019-06-26

时间复杂度 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. 散列表…

相关推荐