本文最后更新于 2024-10-12,文章内容可能已经过时。

第一章

生活中的算法:

  • 查字典:有序列表下的二分查找
  • 整理扑克:小数据集下的插入排序
  • 货币找零:某种限定条件下的贪心算法

简单介绍了算法和数据结构之间的关系。

首先算法的定义,是在有限时间内解决特定问题的指令或操作步骤,基本特性是:

  • 问题明确,有清晰的输入输出;
  • 算法可行,执行步骤时间和空间有穷(不知道用词是否合适);
  • 结果确定,同等条件下确定输入一定确定输出。

其次是数据结构的定义:是组织和存储数据的方式,涵盖数据内容、数据之间关系操作的方式,数据结构的目标:

  • 占用内存尽量小
  • 数据操作尽可能迅速
  • 能提供简洁的数据表示和逻辑信息

最后是数据结构与算法的关系:

  • 数据结构是算法的基石。数据结构为算法提供了结构化存储的数据,以及操作数据的方法。
  • 算法是数据结构发挥作用的舞台。数据结构本身仅存储数据信息,结合算法才能解决特定问题。
  • 算法通常可以基于不同的数据结构实现,但执行效率可能相差很大,选择合适的数据结构是关键。

最后小结部分,作者描述了学习算法的意义,作为程序员内功。大部分问题只是被差不多的解决,而且问题的处理和解决很大程度上取决于观测者的知识储备。

总结:学习算法是非常必要的,不单单是新开发时使用合适的算法、匹配的数据结构带来的效率,还有分析问题时的视野。