《算法导论(原书第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

posted on 2009-08-18 11:55  豆豆の爸爸  阅读(734)  评论(0编辑  收藏  举报