算法分析,是关于电脑程序性能和内存的问题,特别关注性能;
课程中让大家去思考什么比性能更加重要:安全、可扩展性、用户友好等等,这些都比性能更加重要。
如果算法和性能都不重要,为什么要学习算法,为什么关注性能?
因为性能的好与坏直接决定是否可行;算法和性能是程序所有的基础,处于最底层;
课程中引入一个很常见的问题进行分析:排序!
举例:序列<,,, ... , >重新排列得到<,,, ... , >, 使得,, ... , ;
这里直接描述了一直算法:插入排序;伪代码如下:
INSERTION-SORT(A,n)
for j <-- 2 to n
do key <-- A[j]
i < j - 1
while i > 0 and a[i] > key
do A[i+1] <-- A[i]
i <-- i-1
A[i+1] = key
插入排序的核心思路为:A[j](Key)左边的序列均为排列好的,只需要找到key的插入位置即可,示例图如下:
举例模拟插入排序过程: