《算法导论(原书第2版)》读书笔记
随手记下,很随性的,不成系列。自己上大学时稀里糊涂的混过来的,根本没有数学的基础,如:概率统计,排列组合,线性代数,离散数学。所以学得非常痛苦和吃力,感觉枯燥难学。但为了自己的编程开发的理想,坚持!
第1章 The Role of Algorithms in Computing
“lg n 表示 log2 n” 在这里本人有个疑问:lg n应该是表示log10 n才对吧
练习题1.2-2的图画:
在这,lg n 这个对数函数的底数按书上是为2。y轴表示有多少步。
第2章 Getting started
循环不变式(loop invariant)是由证明程序的算法是否正确而发展出来的。如果循环的初始化为真、循环下一次迭代的保持为真、循环结束为真,那么算法是正确的推理是成立的。
插入排序算法的C#语言实现:
int[] A = new int[] { 5, 2, 4, 6, 1, 3 }; for (int j = 1; j < A.Length; j++) { int key = A[j]; int i = j - 1; while (i >= 0 && A[i] > key) { A[i + 1] = A[i]; i--; } A[i + 1] = key; } foreach (int k in A) { Console.WriteLine(k.ToString()); }
JavaScript语言实现:
var arr = [5, 2, 4, 6, 1, 3]; for(j=1;j<arr.length;j++) { key = arr[j]; i = j - 1; while(i>0 && arr[i] > key) { arr[i+1] = arr[i]; i=i-1; } arr[i+1] = key; } console.log(arr);
INSERTION-SORT(A)的第5行:times 的解释:∑上面是n下面是j=2右边是tj是表示t2+t3+…+tn-1+tn