
算法
Shingle_
Done is better than perfect.
展开
-
二分查找(递归与非递归实现)
二分查找排序的重要意义之一,就是为检索带来方便。而在有序表中查找元素常常使用二分查找(Binary Search),有时也译为“折半查找”,它的基本思想就像是“猜数字游戏”: 你在心里想一个不超过1000的正整数,我可以保证在10次之内猜到它——只要你每次告诉我猜的数比你想的大一些、小一些,或者正好猜中。 猜的方法就是“二分”。首先我猜500,除了运气特别好正好猜中之外,不管你说“太大”还是“太小原创 2016-06-15 17:23:26 · 906 阅读 · 0 评论 -
优先队列的数组、二叉堆实现
一个合适的数据结构应该支持两种操作:删除最大元素和插入元素。这种数据类型叫做优先队列。实现栈或是队列与实现优先队列的最大不同在于对性能的要求。对于栈和队列,我们的实现能够在常数时间内完成所有操作; 而对于优先队列,我们刚刚讨论过的所有初级实现中,插入元素和删除最大元素这两个操作之一在最坏情况下需要线性时间来完成。API一个优先队列的用例问题:输入N个字符串,每个字符串都对映着一个整数,从中找出最大原创 2016-07-02 14:46:27 · 1985 阅读 · 0 评论 -
栈、队列、背包的数组与链表实现
基础数据结构——数组和链表背包、队列和栈下压(LIFO)栈(能够动态调整数组大小的实现)下压堆栈(链表实现)达到了最优设计目标 - 它可以处理任意类型的数据; - 所需的空间总是和集合的大小成正比; - 操作所需的时间总是和集合的大小无关。先进先出队列背包 本本文内容截自《Algorithms (Fourth Edition) 》原创 2016-06-23 15:05:48 · 902 阅读 · 0 评论 -
字母查找树
字母查找树(letter trie)是一种可以用来索引词汇的数据结构,一次一个字母。构建一个字母查找树:一个++递归++函数建立一个嵌套的字典结构,每一级嵌套包含给定前缀的所有单词,而子查找树含有所有可能的后续词In [15]: def insert(trie, key, value): ...: if key: ...: first, rest = key[原创 2017-02-21 15:02:41 · 640 阅读 · 0 评论