本章节主要介绍了插入排序、
插入排序,说到插入排序就要提起常备拿来进行比对的冒泡排序。两个排序时间复杂度均为O(n^2)、空间复杂度O(1)
插入排序效率要高于冒泡排序、数量越多差距越大,所以插入排序更常用。
冒泡排序:像水底的气泡一样,挨个比较大小,将大的数字依此选出来;
插入排序:像摸牌一样,分为排好序(手里的牌)、未排序(桌上的牌),将未排序的插入到已排序中;
概念:循环不变式;
满足:初始化、保持、终止
伪代码规则(不过多介绍);
对数组x[a1,a2.....an]做insertion-sort
for i=1;i<n;n++;
key=x[i]
for j=i;j>0;j--
if x[j-1]>key
x[j]=x[j-1]
x[j]=key
2.1-4 x[n],y[n];=>r[n]
carry=0//进位
for i=1;i<n;i++
r[i]=x[i]+y[i]+carry
carry=0//进位归零
if r[i]>=2
r[i]=r[i]-2
carry=1
分析算法
RAM(随机访问机)单处理计算模型,用于验证算法。
分析算法比较复杂, 会使用到较多的数学概念;
设计算法
分治法:递归结构就是典型的分治法思想;三个步骤:分解、解决、合并