
算法导论_笔记&心得
qinmiochaos
愚者千虑,必有999失
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
插排最优情况
心得:利用数组本身先验特点,决定比较顺序。考虑重复元素情况,减少常数因子。 结论:插排有序数组(包括部分或全部重复) 比较顺序自右向左,比较操作O(n),插入操作O(0); 比较顺序自左向右,比较操作O(n^2), 插入操作O(0) 测试用例1:012,345,678 测试用例2:000,000,000 插排(数组实现) 主要策略:顺次遍历数组元素(i=0:size),维原创 2015-07-26 11:16:29 · 681 阅读 · 0 评论 -
排序算法_链表实现
数组的高效体现于随机访问,插排、快排等排序算法未用到这一特点, 故这两种排序算法可基于链表实现 插入排序: 迭代器 p 顺序访问链表 迭代器 i 顺序访问前 p 个元素 主要的操作为 当 p>i && p.value 删除原位置的 p 将p插入 i-1 与 i 之间 若为单向链表,保存 i-1 与 p-1 算法复杂度为比较的次数O(n^2),减少了移动数组导致的开原创 2015-08-08 15:35:16 · 407 阅读 · 0 评论 -
快排最劣情况
将数组排序,一次从头部或尾部获取元素,加入空队列p 则对于构造出的队列,使用快排效率退化为O(n^2) 即保证了尾端的元素无法对数组划分(0-n划分)原创 2015-08-08 15:17:25 · 873 阅读 · 0 评论 -
快排partition过程——索引小修改
原伪代码: 1 partition(A,p,r) 2 x=A[r] 3 i=p-1 4 for j=p:r-1 5 if A[j] 6 i++ 7 exchange A[i].A[j] 8 exchange A[i+1],A[r] 9 return i+1 索引i指向 包括《剑指offer》中也是这样实现索引, 其实很不方便,一开始指向了数组前(外部)的元素,第8、原创 2015-08-08 15:08:52 · 527 阅读 · 0 评论 -
O(n)冒泡排序
数据访问策略:顺序访问 且两步迭代间独立(独立是指顺序执行不由状态变量控制) 每个计算机负责冒一个泡,第一个泡访问元素[0]结束后,第二个泡即可开始访问元素[0] 不严格说:第一个泡访问末尾元素时,第二个泡访问倒数第二个元素, 所以第一个泡冒泡结束时 ,产生了所有的泡泡,算法结束 时间复杂度O(n)原创 2015-07-28 08:10:27 · 754 阅读 · 0 评论 -
插排O[n]无缝实现:顺序读写迭代器访问+两步迭代间独立性
插排O【n】无缝实现:顺序读写迭代器访问+两步迭代间独立性原创 2015-07-26 12:13:51 · 525 阅读 · 0 评论 -
50种遍历树的方法
推荐一首歌50ways to leave your lover 50当然是虚指,包括遍历的方法和实现的方法 常见遍历顺序:前序、中序、后序 常见实现方法:递归、栈、队列 遍历树的核心在于“遍历”,输出所有节点,并对一个节点只输出一次 换个角度,对每个节点,确定该节点相对于相连接点的优先级,优先级定了,按优先级访问,就能达到目的 递归:左节点优先、右节点优先、父节原创 2015-09-01 17:37:23 · 687 阅读 · 0 评论