数据结构和算法

数据结构和算法中包含了太多的内容,根据我看到的大概有以下的内容:

简单的说,是“3+2”:3种数据结构:线性结构、树、图;2种算法:查找、排序。其中线性结构又可以分为:顺序表、链表、队列、栈它们在平时有着更加广泛的应用。而树、图则在解决一些特定的算法时更加管用。

其次,数据结构并不是死的:你可以根据自己的需要定制数据结构的成员。而这些成员又决定了对应于这种结构的算法。因此,数据结构跟算法之间并不是孤立的,而是紧密联系的一体:对于有的算法,比如返回树中一个节点的父节点,如果你在树结构中添加一个parent指针,就很好办,如果没有这个指针,做起来就会很纠结。

 

1、程序设计=数据结构+算法

我的理解:算法,就是解决一个问题所用到的思路和方法。

对于特定的问题,我们需要使用不同的算法,有时候是一个算法,有时候是几个算法的结合,甚至有时候需要我们根据实际问题设计与之最匹配的算法。

算法一般具有下列5个重要特性:

(1)输入: 一个算法应该有一个或多个输入:

(2)有穷性:一个算法必须在执行有穷步骤之后正常结束,而不能形成无穷循环:

(3)确定性:算法中的每一条指令必须有确切的含义,不能产生多义性:

(4)可行性:算法中的每一条指令必须是切实可执行的,即原则上可以通过已经实现的基本运算执行有限次来实现:

(5)输出:一个算法应有零个或多个输出,这些输出是同输入有某个特定关系的量。

 

2、什么是数据结构?

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科(带结构的数据元素的集合。)。简单来说,数据结构就是关系,没错,就是数据元素相互之间存在的一种或多种特定关系的集合。

程序设计=数据结构+算法

一般的,我们把数据结构分为逻辑结构和物理结构。

逻辑结构:是指数据对象中数据元素之间的相互关系,也是我们今后最需要关注和讨论的问题。

物理结构:是指数据的逻辑结构在计算机中的存储形式。

四大逻辑结构:

1>线性结构:数据元素之间是一对一的关系;

2>树形结构:数据元素之间存在一种一对多的层次关系;

3>图形结构:数据元素是多对多的关系;

4>集合结构:其中的数据元素除了同属于一个集合外,它们之间没有其他不三不四的关系。

 

数据的逻辑结构有4种基本类型:集合结构、线性结构、树形结构和图形结构。线性表和树是最常用的两种高效数据结构,许多高效的算法都能用这两种数据结构来设计实现。偶尔也会使用到图形结构,集合结构使用甚少。

 

根据物理结构的定义,我们实际上研究的的就是如何把数据元素存储到计算机的存储器中。

存储器主要是针对内存而言的,像硬盘、软盘、光盘等外部存储器的数据组织通常用文件结构来描述。

 

3、时间复杂度和空间复杂度

1>用常数1取代运行时间中的所有加法常数;

2>在修改后的运行次数函数中,只保留最高阶项;

3>如果最高阶项存在且不是1,则去除与这个项相乘的常数;

这样,得到的最后结果就是大O阶。

 

一般情况下,当一个算法包含两个(或多个)独立的过程我们在计算完各自的时间复杂度后,只选择较大的那个。例如:N和NlogN,那么这个算法的时间复杂度就是NlogN。

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值