PureTalk.算法与数据结构——写在前面的话

<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

PureTalk. 算法与数据结构

 

写在前面的话

 

PureTalk. 算法与数据结构”的写作目的是将算法的思想与具体实现中的代码细节相分离。我们有时候会感到一旦离开代码就不能有效的长我算法。产生这种现象往往是由于对算法的本质没有进行深入的思考。在这种情况下,我们往往依赖代码来“记忆”算法,这种没有进过抽象的知识,往往很难运用到问题的新变体上。这样,由于我们闹钟存储的解决问题的方案太过“具体”,所以我们在遇到问题并寻求方案的时候就很难将这些问题与我们已有的解决方案进行模式匹配。为了让我们的知识拥有用武之地,我们需要对知识进行抽象。知识就像一颗倒着生长的树,向上进行抽象的层次越高,向下能够触及到的节点也就越多。

 

C 语言等编程语言实现的算法往往过于具体,即使是使用为代码也很难将算法的本质特点展现出来。算法的编程实现包含了许多算法核心以外的细节。如,在C 语言中当我们要交换两个变量ab 的值的时候,我们需要引入另一个临时的变量temp ,并作如下的操作:

 

temp = a;

a = b;

b = temp;

 

而这三行代码所要表达的意思仅仅是“交换变量的值”。在举一个例子,通常我们在用代码实现插入算法的时候,会在原乱序的集合(一般是数组)的前部或后部逐渐分出来一个有序集合,它不断扩大,最终替代了原先的无序集合,进而实现了集合的有序化。这种代码技巧给我们带来的震撼通常会分散我们的注意力,是我们很容易忽视算法的本质。在插入排序这个例子中,始终存在“有序”和“无序”这两个逻辑上相互独立的集合这点重要的信息就很容易被我们忽视。

 

PureTalk 采用文字的形式来展现算法的本质,这样就将编码的技巧分离了出去。是我们何以更专心的欣赏算法的本质。古时候的经济学家可以不用任何数学方程式就可以把经济现象分析清楚。算法的本质,应该是具体解决方案背后的思想,我们不妨让它保持纯洁。

 

当然,用代码实现思想是一门技术,更是一种艺术,应该是我们始终追求的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值