2017年8月16日

算法导论笔记——第十~十一章 数据结构(一) 散列

摘要: 第十章 基本数据结构 栈:可由数组表示 队列:可由数组表示 指针和对象:可由多数组表示。可用栈表示free list 有根数: 二叉树:左右孩子 分支无限制:左孩子右兄弟表示法 第十一章 散列表 数组:为每个元素保留一个位置 散列表:用于实际存储关键字比全部可能关键字少很多时,比如字典操作 解决散列 阅读全文

posted @ 2017-08-16 18:31 胖子一刚 阅读(368) 评论(0) 推荐(0) 编辑

算法导论笔记——第九章 中位数和顺序统计量

摘要: 9.1 最小值和最大值 同时求最小值和最大值,总的比较次数至多为3*[n/2]。只要成对处理数据即可。 9.2 期望为线性时间的选择算法 使用分治算法和快速算法用到的随机选择pivot。假设数据都不相同。 RANDOMIZED-SELECT(A, p, r, i) //从数组A的下标段p到r找第i大 阅读全文

posted @ 2017-08-16 16:54 胖子一刚 阅读(641) 评论(0) 推荐(0) 编辑

算法导论笔记——第六七章 堆排序和快速排序

摘要: 第六章 堆排序 最小堆和最大堆:近似的完全二叉树 A[parent(i)]<=A[i]或者A[parent(i)]>=A[i] 建堆复杂度O(n) 排序O(nlgn) 实际应用中,快速排序一般优于堆排序。可用于优先队列等。 在一个包含n个元素的堆中,所有优先队列的操作均可在O(lgn)时间内完成。 阅读全文

posted @ 2017-08-16 15:55 胖子一刚 阅读(160) 评论(0) 推荐(0) 编辑

算法导论笔记——第八章 线性时间排序

摘要: 8.1 排序算法的下界 定理8.1 在最坏情况下,任何比较排序算法都需要做Ω(nlgn)次比较。 推论8.2 堆排序和归并排序都是渐进最优的比较排序算法。 8.2 计数排序 计数排序假设n个输入元素中的每一个都是在0到k区间内的一个整数,其中k为某个整数。当k=O(n)时,排序的运行时间为θ(n)。 阅读全文

posted @ 2017-08-16 15:29 胖子一刚 阅读(176) 评论(0) 推荐(0) 编辑

算法导论笔记——第四章 分治策略

摘要: 第四章 分治策略 分解,解决,合并 时间复杂度,求解递归式:代入法,递归树法,主方法 忽略细节:是否为整数,边界条件 4.1 最大数组问题 股票最大收益问题(LC有类似题目,存在线性算法:如果当前和大于0,与下一个累加。如果小于0,舍弃,从下一个重现开始求和。) 每日股票价格变为每日股票变化量,再计 阅读全文

posted @ 2017-08-16 13:56 胖子一刚 阅读(268) 评论(0) 推荐(0) 编辑

排序算法复杂度/稳定性总结

摘要: 1 直接插入:按次序将下一个元素从后向前比较,插入到第一个有序位置。 2 shell sort:先分组,每组下标距离相等,进行组内直接插入排序。重复上一步骤,每次距离(按某种规则,但相邻值不为倍数为佳)递减直到1。最后一次即对一个基本有序序列进行直接插入排序。 3 直接选择排序:从待排序列中选择最小 阅读全文

posted @ 2017-08-16 11:26 胖子一刚 阅读(325) 评论(0) 推荐(0) 编辑

导航