1.插入排序:将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据(插入的数据排到最后的位置,与前一个数比较,如果顺序是对则不变,否则前移,如此循环,直到所有的数都插入完成)
在这个算法中是哟偶那个到循环不变式,其必须满足三个性质(初始化,保持,终止) Θ(n^2)
2.伪代码约定:缩进风格类似传统的程序,表示其作用范围。while,for,repeat等循环和if,then,else条件格式。△侧三角表示注释。多重赋值i<-j<-e。变量(如i,j,key等)是局部变量在没有显示说明的情况下,都不使用全局变量。数组元素,数组名[下标]。复合数据一般组织成对象,由属性和域组成。布尔运算符号and和or都具有短路能力。
3.RAM模型包含常见的指令:算数指令(加减乘除,取余,向下取整,向上取整)数据移动指令(装入,存储,复制)和控制指令(条件和非条件转移,子程序调用和返回指令)
4.选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法
5.分治法:将原来问题分解为n个规模较小而与原来问题相似的子问题,递归的解决这些子问题,然后再合并其结果就得到原问题的解。递归式子,T(n)=2T(n/2)+ Θ(n),其中n>1,最后推到其运行时间为 Θnlgn)
6.冒泡排序:依次比较相邻的两个数,将小数放在前面,大数放在后面,重复交换相邻两个反序元素, Θ(n^2)
7.
符号 | 定义 |
---|---|
f(n) = O(g(n)) | 渐进上限0≤f(n) ≤b g(n) |
f(n) = o(g(n)) | 非渐进上限0≤f(n) |
f(n) = Ω(g(n)) | 渐进下限 |
f(n) = ω(g(n)) | 非渐进下限,对任意正常数a,存在常数no>0,0≤ag(n)≤f(n) |
f(n) = Θ(g(n)) | 0≤ag(n)≤f(n) ≤b g(n) |