DataStructure part1 基础概念
一、基础知识
1、基本概念
数据、数据元素、数据项、数据对象、数据结构
2、逻辑结构和物理结构
逻辑结构:集合结构、线性结构(一对一)、树形结构(一对多)、图形结构(多对多)
物理结构(数据的逻辑结构在计算机中的存储形式):顺序存储结构、链式存储结构
3、数据类型
原子类型:整型、实型、字符型等。(不可再分解)
结构类型:数组等(由若干个类型组合而成,可以再分解)
4、抽象数据类型(ADT):指一个数学模型及定义在该模型上的一组操作(Data+Operation)
二、算法
1、算法特性:输入(0+)、输出(1+)、有穷性(有限步骤)、确定性(无二义性)、可行性(每一步可行)
2、算法设计要求:正确性、可读性、健壮性、时间效率高和存储量低
3、函数的渐进增长:给定两个函数f(n)和g(n),如果存在整数N,使得对于所有n>N,f(n)总是大于g(n),那么我们说f(n)的增长渐进快于g(n)
4、算法时间复杂度:T(n)=O(f(n))。
表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称为算法的渐进时间复杂度,简称时间复杂度。f(n)为问题规模n的某个函数
推导大O阶方法:常熟均为1、只保留最高阶项、最高阶项的系数改为1
常数阶O(1)、线性阶O(n)、对数阶O(logN)、平方阶O(n^2)、nlogn阶
所消耗时间大小依次为:O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)
5、算法的空间复杂度:S(n)=O(f(n))通过计算算法所需的存储空间来实现
若输入数据所占空间只取决于问题本身,与算法无关,则只需分析算法在计算时所需的辅助单元。若算法在执行时所需的辅助空间相对于输入数据量而言是个常数,则称此算法为原地工作,空间复杂度为O(1)