不知你和我是否一样,当看到数据结构与算法这几个字时,心中充满了欣喜。
我是从学完C语言后看到这本书的,当时寒假放假前几天盘算着看这本书(严奶奶的书)的计划,可是,计划很丰满,现实很骨感。拿回家从第一页开始读起,一连读了三天,然后就,那个假期再也没看过。
究其原因,一是看书学习方法不对,二是没有入门。学一些IT科目多了之后,你会发现,第二个原因真的很重要!(废话不多说,主要是希望自己可以提供些前车之鉴,减少大家一些不必要犯错的时间。共同加油!)
数据结构的概述
定义
我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应的操作,这个相应的操作也叫做算法。
数据结构=个体+个体的关系 |
---|
算法=对存储数据的操作 |
狭义定义:
数据结构是专门研究数据存储的问题
数据的存储包含两方面:个体的存储 + 个体关系的存储
广义定义:
数据结构既包含数据的存储也包含数据的操作
(对存储数据的操作就是算法)
算法
一般定义:
解题的方法和步骤
狭义定义:
算法是和数据的存储方式密切相关
广义定义:
算法和数据的存储方式无关,这就是泛型思想
衡量算法的标准:
(1) 时间复杂度
大概程序要执行的次数,而并非是执行的时间(因为同一程序在不同机器上执行的时间是不一样的,有差异)
(2) 空间复杂度
算法执行过程中大概所占用的最大内存
(3) 难易程度
(4) 健壮性
数据结构的地位:
数据结构是软件中最核心的课程
程序 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言
泛型:
对于同一种逻辑结构,无论该逻辑结构的物理存储是什么样子的,我们可以对它执行相同的操作。