前言 希尔排序是Donald Shell于1959年提出来的一种排序算法,它是第一批突破这个时间复杂度的算法之一。大话数据结构对这个算法的讲解,我看得一知半解的,之后网上找了下资料,发现维基百科对这个算法的讲解非常不错,…
标签:算法
数据结构与算法-链表(下)
承接上文,解决普通链表查找的问题。首先分析问题的瓶颈,对于查找,自然是从头开始顺序查找到尾部,那么怎么才能更快查找到目标元素呢?将链表中的元素排序可以加速查找过程,但仍需要顺序查找。因此,链表最好允许跳过某些节点,以避免…
《计算机程序设计艺术》作者高德纳
原文作者:Siobhan Roberts 译者:UC 国际研发 Jothy 写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。 …
看图轻松理解并查集
前言 推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各种堆、各种队列、各种列表、各种树、各种图、各种排序等等几十篇的样子。 并查集 并查集(Disj…
数据结构与算法-二叉查找树平衡(DSW)
上一节探讨了二叉查找树的基本操作,二叉查找树的查找效率在理想状态下是O(lgn),使用该树进行查找总是比链表快得多。但是,该论点并不总是正确,因为查找效率和二叉树的形状息息相关。就像这样: 图1-1给出了3颗二叉查找树,…
Java 快速进行对象集合数据比对,For循环嵌套不应该成为你的选择
在项目中,我们常常用到两个集合的数据比对,找到其中不同的数据,在Android里面基本上数据量也不会太大,往往大家都是直接用for循环嵌套搞定,大家有没有想过 当数据量很大的时候,使用for循环嵌套找出不一样的对象,需要…
DAG 下的激励机制的挑战与对策
在比特币系统中,为了保证安全,比特币的交易吞吐率需要保持一个较低的水平。为了提高区块链的吞吐率,很多方案被提出来,其中一种方案通过使用有向无环图(Directed Acyclic Graph, DAG)的账本结构,提高基…
异端审判器!一个泛用型文本聚类模型的实现(2)
上文链接:异端审判器!一个泛用型文本聚类模型的实现(1) 上回,我们提出了一种只要输入一堆字符串,就能根据字符串的构造挑拣出“少数派”,以识别异常参数的构想。我们将它称作“异端审判”。 前文中我们已经定义好了一些必要概念…
BAT 经典算法笔试题 —— 磁盘多路归并排序
在 LevelDB 数据库中高层数据下沉到低层时需要经历一次 Major Compaction,将高层文件的有序键值对和低层文件的多个有序键值对进行归并排序。磁盘多路归并排序算法的输入是来自多个磁盘文件的有序键值对,在内…
简单的算法-解决页面脚本异步加载顺序问题
这几天稍微扫了一下CoffeeScript的部分源码,发现了一条挺有意思的算法,它解决了页面异步加载脚本时遇到的顺序问题。只是当初都没想过可以这样优雅地去处理这方面的问题。异步加载的脚本之间可能会有依赖关系,因此加载顺序…
看图轻松理解斐波那契数列
前言 推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各种堆、各种队列、各种列表、各种树、各种图、各种排序等等几十篇的样子。 斐波那契 斐波那契(Le…
看图轻松理解计数排序
前言 推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各种堆、各种队列、各种列表、各种树、各种图、各种排序等等几十篇的样子。 计数排序 计数排序(Co…