《算法导论》第2章 算法基础 个人笔记
2017-05-02 12:31
239 查看
第2章 算法基础
2.1 插入排序
INSERTION-SORT(A) for j = 2 to A.length key = A[j] i = j - 1 while i > 0 and A[i] > key A[i+1] = A[i] i-- A[i+1] = key
2.2 分析算法
在INSERTION-SORT中,若输入数组已排好序,则出现最佳情况,T(n)=Θ(n)若输入数组已反向排序,则导致最坏情况,T(n)=Θ(n2)
2.3 分治法–归并算法
分治模式在每层递归时都有三个步骤:分解原问题为若干个子问题
解决这些子问题
合并这些子问题
归并算法完全遵循分治模式:
MERGE(A, p, q, r) n1 = q - p + 1 n2 = r - q let L[1..n1+1] and R[1..n2+1] be new arrays for i = 1 to n1 L[i] = A[p + i - 1] L[n1 + 1] = MAX for j = 1 to n2 L[j] = A[q + j] R[n2 + 1] = MAX i = 1 j = 1 for k = p to r if L[i] <=R[j] A[k] = L[i] i++ else A[k] = R[j] j++
MERGE-SORT(A, p r) if p < r q = (p + r) / 2 MERGE-SORT(A, p q) MERGE-SORT(A, q + 1, r) MERGE(A, p, q, r)
复杂度分析:
每一个MERGE的复杂度是(r-p+1),即输入规模,用结果递归树表示
第 i 层具有2i 个节点,每个节点贡献代价c(n
c66e
/2i),所以第 i 层具有总代价2i∗c(n/2i)=cn,递归树总层数为lgn+1。故总代价为cn(lgn+1)=cnlgn+cn,忽略低阶项和常量c便给出了期望的结果Θ(nlgn)
相关文章推荐
- 《算法导论》笔记:第2章 算法基础
- 算法导论学习笔记 第2章 算法基础
- 算法导论笔记ch2_算法基础(插入排序、归并排序、设计算法)
- 基础知识 '算法在计算机中的作用' --《算法导论》笔记
- 【算法导论学习笔记】第2章:算法基础
- 《算法导论》笔记系列之第2章算法基础
- 读书笔记:《算法导论》,第2章:算法基础
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- 算法入门----第2章 分类: 算法导论 2011-03-03 11:11 131人阅读 评论(0) 收藏
- 《大话数据结构》第2章 算法基础 2.8 函数的渐近增长
- C\C++ 程序员从零开始学习Android - 个人学习笔记(九) - java基础 - 异常
- 《算法导论》第2章笔记(不定期更新中)
- Java基础程序设计笔记---第2章 简单的Java程序
- 《算法导论》[第2章] 算法入门-[2.2] 算法分析
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- C\C++ 程序员从零开始学习Android - 个人学习笔记(五) - java基础 - 类(待续)
- Introduction to Algorithms 算法导论 第2章 算法入门 学习笔记及习题解答
- 算法导论学习笔记-第二十二章-图的基本算法
- Introduction to Algorithms 算法导论 第1章 基础知识 学习笔记及习题解答
- 【JS】JavaScript高级程序设计笔记 第2章 ECMAScript基础