数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储、组织数据的方式。数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分。算法
存储结构(storage structure)也称为物理结构(physical structure),指的是数据的逻辑结构在计算机中的存储形式。数据的存储结构通常能够反映数据元素之间的逻辑关系编程
总结 逻辑结构是面向问题的,而物理结构就是面向计算机的. 其基本的目标就是将数据以及逻辑关系存储到计算机的内存中.数组
数据类型: 是指一组性质相同值的集合以及定义在此集合的一些操做的总称。在C语言中,按照取值不一样,数据类型能够分为2类:markdown
抽象数据类型(abstract data type,ADT)是描述具备某种逻辑关系的数据模型,并对在数学模型上进行的一组操做。抽象数据类型描述的是一组逻辑上的特性,与在计算机内部表示无关,计算机中的整数数据类型是一个抽象数据类型,不一样处理器可能实现方法不一样,但其逻辑特性相同,即加、减、乘、除等运算是一致的。“抽象”的意思是数据类型的数学抽象特性而不是指它们的实现方法。抽象数据类型体现了程序设计中的问题分解、抽象、信息隐藏等特性,能够把现实中的大问题分解为多个规模小且容易处理的小问题,而后创建起一个能被计算机处理的数据,并把每一个功能模块的实现细节做为一个独立的单元,从而使具体实现过程隐藏起来。就相似建一栋房子,分红若干个小任务,如地皮规划、图纸设计、施工、装修等,整个过程与抽象数据类型中的问题分解相似。而搬砖人不须要了解图纸设计如何,设计图纸人员不须要了解施工的地基、砌墙的具体细节,装修工人不用关系图纸和搬砖过程,这就是抽象类型中的信息隐藏。 抽象数据类型的概念可能让初学者不太容易理解。例如线性表的抽象数据类型的描述数据对象集合:线性表的数据对象集合为{a1,a2,a3,····,an},每一个元素的类型均为DataType。其中,除了第一个元素a1外,每个元素有且只有一个直接前驱元素;除了最后一个元素an外,每个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的。数据结构
算法(algorithm)是解决特定问题求解步骤的描述,在计算机中表现为有限的操做序列。在数据类型创建起来以后,就要对这些数据类型进行操做,创建起运算的集合即程序。运算的创建、方法好坏直接决定着计算机程序原型效率的高低。数据结构和算法
二者基友联系又有区别。联系是程序=算法+数据结构。数据结构是算法实现的基础,算法老是要依赖某种数据结构来实现的。算法的操做对象是数据结构。区别是数据结构关注的是数据的逻辑结构、存储结构有一集基本操做,而算法更多的是关注如何在数据结构的基本上解决实际问题。算法是编程思想,数据结构则是这些思想的基础。函数
时间复杂度,又称时间复杂性,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。时间复杂度经常使用大O符号表述。性能
为了更好地描述时间复杂度有如下规定:spa
算法的时间复杂度是衡量一个算法好坏的重要指标。通常状况下,随着规模n的增大,次数T(n)的增加较慢的算法为最优算法。常见时间复杂度从小到大依次排列:设计
O(1) < O(logn) < O(n)< O(nlogn) < O(n²)<O(n³) < O(2^n) <O(n!) < O(n^n) ###常见的时间复杂度
时间复杂度描述的是算法的最坏状况。
空间复杂度(space complexity)做为算法所需存储空间的量度,记作S(n) = O (f(n))。其中,n为问题的规模;f(n)为语句关于n的所占存储空间的函数。 对于一个算法,全部的变量、指令、结果都须要存储空间,另外在算法的执行过程当中,临时变量和临时结果也须要保留下来以便下一步计算,这些称为算法执行时的辅助空间。
空间复杂度主要定性描述算法所需的辅助空间。
对一个算法,其时间复杂度和空间复杂度每每会互相影响. 当追求一个较好的时间空间复杂度时,可能会致使占用较多的存储空间. 便可能会使用空间复杂度的性能变差.反之亦然. 不过,一般状况下,鉴于运算空间较为充足,人们都以算法时间空间复杂度做为算法优先的衡量指标。