图解算法书籍阅读心得(第一章)

图解算法(Java)Chapter 1

一…计算思维:系统化的逻辑思维模式与习惯。Google公司给出的定义中,主要包含四部分:(1)分解(Decomposition),(2)模式识别(Pattern Recognition),(3)模式概括与抽象(

Pattern Generalization and Abstraction),(4)算法(Algorithm).

1.分解

问题的分解即将一个复杂问题分割为许多小问题,把这些小问题逐个击破,从而达到解决大问题的目标。

2.模式识别

分解之后的小问题中共同的属性称为“模式”,模式识别指的是在一组数据中找出特征或规则,用于对数据进行识别与分类。

3.模式概括与抽象

模式概括与抽象在于过滤以及忽略掉不必要的特征,让我们可以集中在重要的特征上,这样有助于将问题抽象化。具体过程为收集数据与资料,通过模式概括与抽象把无助于解决问题的特性与模式去掉,留下相关的及重要的属性,知道我们确定一个通用的问题以及建立解决这个问题的规则。

注意:“抽象”没有固定的模式,不同的人对同一件事物的分解可能是不同的。

4.算法

算法常出现在程序设计的第一步,算法本身就是一种指令。

二…算法

1.算法条件

输入,输出,明确性,有效性,有限性

算法表示:流程图,图形,伪代码,代码,自然语言等

2.算法的时间复杂度O(f(n))

在一个完全理想状态的计算机中,我们定义T(n)来表示程序执行要花费的时间,n代表数据输入量程序的“最坏运行时间”是衡量时间复杂度的标准,一般以Big-Oh表示。

其实在分析时间复杂度时,往往用函数来表示他的成长率,其实时间复杂度是一种“渐进表示法”。

O(f(n)可以视为某算法在计算机中所运行需要时间不会超过某一常数倍的f(n)意思是存在两个常数c与n0,若n>=n0则T(N)<=cf(n).f(n)又称为运行时间的成长率,估算复杂度时,往往采用宁可高估不要低估的原则,因此估计出来的复杂度是算法真真正所需运行时间的上限。

**注意:Big-Oh是一种用来表示最坏运行时间的方式,也是最常用于描述时间复杂度的渐进式表示法。**优劣关系比较如下:

O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2^n)

三…程序设计逻辑简介

1.结构化程序设计

“由下而上”:指先编写整个程序中最容易的部分,在逐步扩大来完成整个程序。

“由上而下”:指将整个程序需求从上到下,从大到小逐步分解为较小的单元(模块),是程序员便于对各模块分别进行开发,结构化程序设计的核心精神就是由上而下设计与模块化设计。

2.面向对象的程序设计

“面向对象程序设计”(Objected-Oriented Programming,OOP)的主要设计思想就是将存在于日常生活中随处可见的对象(Object)概念应用在软件开发模式。特点:更生活化,可读性更高,更容易扩充修改与维护。

对象:外部行为与内部状态。

面向对象的程序设计的重点:程序的可读性,重复使用性,扩展性以及封装性,继承性,多态性。

封装:用类(class)来实现“抽象数据类型”,是一种用来描述对象的状态与行为的数据类型。如教师类可以包括成年人的属性与教书的活动。

继承:允许了代码的复用,新类可作为子类继承父类的的属性与方法(extends),可视为一种复制。

多态:“同名异式”,即让具有继承关系的不同类对象可以调用相同名称的成员方法,并产生不同的处理结果。

3.面向对象程序设计其他概念

对象(Object):可以是一个抽象概念或具体事物,通过new操作来创建新的对象,属于哪个类即可对属性进行赋值以及调用方法。

类(class):具有相同结构与行为的对象集合,是对对象共同特征的描述或者对象的抽象。

属性(Attribute):用来描述对象的基本特征与其所属的性质,。

方法(Method):是面向对象系统中对象的动作或行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值