开发者社区> vamei> 正文

纸上谈兵: 算法与数据结构

简介: 算法和数据结构是计算机科学的核心内容。作为程序员,编程是我们的实战项目。然而,写出程序还不够。一个程序在应对一些大型而复杂的情况时,会耗费大量的时间。我们可以很容易写出一个从文件中找到一个词的程序,比如逐词扫描,看是否相符。
+关注继续查看

算法和数据结构是计算机科学的核心内容。作为程序员,编程是我们的实战项目。然而,写出程序还不够。一个程序在应对一些大型而复杂的情况时,会耗费大量的时间。我们可以很容易写出一个从文件中找到一个词的程序,比如逐词扫描,看是否相符。但如果我们的文件有几十TB,而且要从文件中找到上百个词,逐个扫描的办法就几乎不可行。我们需要优化程序,以便我们的程序可以应对复杂问题。算法研究解决问题的方法,而数据结构则是设计一种更好的组织数据和使用数据的方式。两者有很强的相互依赖关系,所以往往放在一起讨论。

 

我将这一系列文章标题为“纸上谈兵”。历史上,纸上谈兵的是赵括。他是赵国名将赵奢的儿子。赵括自幼熟读兵书,但没怎么上过战场。他取代廉颇指挥赵军,与秦军对峙。由于他急于出击,导致赵军陷入圈套,兵败长平。四十万赵国士兵被坑杀,赵国一蹶不振。

 

就好像兵书一样,“算法和数据结构”的核心是处理计算机问题的一些基本原则经典案例。与介绍语言的语法书不同,“算法和数据结构”不能包治百病。很多时候,程序员需要修改已有算法,或者创造算法,才能解决问题。读过兵书之后,还要会活用,才算真正懂得了算法。我还是处于纸上谈兵的阶段,所以以“纸上谈兵”为标题以自勉。在这个系列中,我将简述一些经典算法和数据结构的基本思想,并分享我自己写的相关实现代码。这些代码纯粹是为了加深自己的理解写的,你完全可以忽略我写的代码,而自行实现。动手练习,是学习编程的最好途径了。

希望对大家有用。

 

数学归纳法, 递归, 栈

 

排序算法

 

表 (list)

 

栈 (stack)

 

队列 (queue)

 

树, 二叉树, 二叉搜索树

    AVL树

    伸展树 (splay tree)

 

堆 (heap)

    左倾堆 (leftist heap)

 

哈希表 (hash table) 

 

图 (graph)

    拓扑排序 (topological sort)

    最短路径(shortest path)与贪婪

 

 

RSA加密与破解

 

未完待续...

 

===================

下面是参考书籍:

豆列

http://book.douban.com/doulist/1938922/#sb1237002

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据结构206-冒泡排序算法的认识
数据结构206-冒泡排序算法的认识
8 0
数据结构210-冒泡排序算法的过程
数据结构210-冒泡排序算法的过程
12 0
推荐算法学习网址:【数据结构和算法动态可视化】
推荐算法学习网址:【数据结构和算法动态可视化】
20 0
Qz学算法-数据结构篇(表达式、递归)
数据结构的前缀、中缀、后缀表达式->(逆波兰表达式)和递归
36 0
【数据结构】算法的复杂度分析:让你拥有未卜先知的能力
【数据结构】算法的复杂度分析:让你拥有未卜先知的能力
17 0
Qz学算法-数据结构篇(稀疏数组、队列)
数据结构包括:线性结构和非线性结构。所以博主会通过这两个角度来对线性结构和非线性结构进行梳理归纳。本篇是稀疏数组和队列
28 0
江苏大学 程序设计与算法/算法设计与分析/数据结构与算法/程序设计与数据结构 期末/考研复试复习
江苏大学 程序设计与算法/算法设计与分析/数据结构与算法/程序设计与数据结构 期末/考研复试复习
30 0
【算法与数据结构】排序详解(C语言)
【算法与数据结构】排序详解(C语言)
15 0
+关注
vamei
我是Vamei,一枚大气学博士,却热爱编程。《从Python开始学编程》一书的作者。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
网易云音乐音视频算法处理的 Serverless 探索之路
立即下载
阿里技术参考图册-算法篇
立即下载
阿里千亿特征深度学习算法XNN实践
立即下载