《啊哈!算法》读后感

《啊哈!算法》读后感
我的脑壳很笨,做事喜欢单进程。因此,我喜欢按流程,一步一步的向下推进。
可是我很喜欢读算法,当我自己弄出一个东西,感觉很高兴。
因此笨,所以看算法书总是看不懂。数据结构看了许多遍,总算把KMP算法搞明白,但还有B-树,AVL树,外部排序等许多程序仍然看不懂。所以,只要有能把算法讲明白的书,我一律收购。
其中《啊哈!算法》是其中最出色的一本。
我原来想实现全排列算法,
如3的全排列,打印出
123
132
213
231
312
321
当然用循环也可以弄出来,但太丑了。
有一本书是用回溯法弄的,但我能看明白,自己默不出来。
但作者用递归算法,具体来讲是深度优先的算法写出来,如下:
void dfs(int curr)
{
    if curr==N{
        打印结果
        return    
    }
    for(int i=0;i         if i没使用{
            使用i
            给i打上使用过的标记
            dfs(curr+1)
            把i已经使用过的标记去掉
        }
    }
    return
}
作者提炼出的这个深度优先算法,真是很好。我用这个算法,实现的8皇后问题。
为了解迷宫,作者还给出了广度优先算法,如下所示:
int main

    队列初始化
    起点入队列
    当队列非空时{
        取队头
        按8个方向进行探索{
            找出下一步
            如果下一步越界,就continue
            如果下一步是通的,并且没有走过
                把下一步入队
                下一步是否是目标,如果是就结束
        }
        队头出列
    }


这个广度优先算法作者也写得妙。
作者介绍了迪杰斯特拉的最短路径算法
利用一个辅助数组,记录起点到各个点的距离,选择离起点最近的一点,这点距离确定后,再以这点为跳板,去对其它各点进行松驰。
作者解释得真好。
不过,负权边的那个算法我就死活没看懂。

作者介绍堆排序,因为我在数据结构中学过。
作者介绍并查集,写得真好。能把算法做到深入浅出,不容易的。
最后介绍了最小生成树的算法,其中谱里姆算法和迪杰斯特拉的最短路径算法有些相仿,不仔细思考,真想不出来的。

书中关于割点的算法没看懂,关于二分图也没看懂。
但我看懂了不少,也感觉很是开心。虽然作者说,只要初中水平就可以看懂。哈哈。
 

你可能感兴趣的:(计算机经典书籍,读后感)