数据结构预算法初探

很久没有来更新了,近半年项目比较忙,难得接近年底闲一阵子,研究一下数据结构预算法。今天首先了解一下关于数据结构和算法的一些基本概念。 数据结构概述: 数据结构主要是通过分析数据对象的结构特性,包括逻辑和数据对象之间的关系,然后把逻辑转换成计算机可实现的物理结构,从而便于计算机处理。 1、概念术语: 1、数据 2、数据元素:数据基本单位,如一张表; 3、数据项:组成数据元素的最小单位,如表里的字段; 4、数据对象:性质相同的数据元素集合,是数据的一个子集,如正整数N={1,2,3,4,5...}; 5、数据结构:数据的组织形式,数据元素之间存在的一种或多种特定关系的数据元素级合; 6、数据类型:按照数据值的不同进行划分的可操作性; 2、数据的逻辑结构: 逻辑结构(logical structure)是指在数据中的元素之间的互相关系,数据之间存在不同的逻辑关系构成了以下4种结构类型: 1、集合结构:集合的数据没有任何关系; 2、线性结构:元素结构是一对一的,并且有先后次序a-b-c-d...; 3、树形结构:元素结构关系是一对多的; 4、图结构:元素结构是多对多的; 3、数据的存储(物理)结构: 存储结构(storage structure)也称物理结构(physical structure),指的是数据的逻辑结构在计算中的存储形式。数据的结构一般可以反映数据元素之间的逻辑关系。分为顺序存储结构和链式存储结构: 1、顺序存储结构:把数据元素放在一寸存储地址连续的存储单元里,其数据元素间的逻辑关系和物理关系是一致的; 2、链式存储结构:把数据元素存放在任意的存储单元里,这组存储单元可以是连续,也可以是不连续,数据元素的存储关系并不能反映其逻辑关系,因此需要借助指针来表示数据元素之间的逻辑关系。 4、抽象数据类型: 抽象数据类型(abstract data type,ADT)是描述具有某种逻辑关系的数据模型(或者我理解为一种迭代化的容器),并对在数学模型上进行的一组操作。抽象数据类型描述的是一组逻辑上的特性,与在计算机内部表示无关,计算机中的整数数据类型是一个抽象数据类型,不同处理器可能实现方法不同,但其逻辑特性相同,即加、减、乘、除等运算是一致的。“抽象”的意思是数据类型的数学抽象特性而不是指它们的实现方法。抽象数据类型体现了程序设计中的问题分解、抽象、信息隐藏等特性,可以把现实中的大问题分解为多个规模小且容易处理的小问题,然后建立起一个能被计算机处理的数据,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。 5、算法: 算法(algorithm)是解决特定问题求解步骤的描述,在计算机中表现为有限的操作序列。在数据类型建立起来之后,就要对这些数据类型进行操作,建立起运算的集合即程序。运算的建立、方法好坏直接决定着计算机程序原型效率的高低。 数据结构和算法的关系:两者既有联系又有区别。联系是程序=算法+数据结构。数据结构是算法实现的基础,算法总是要依赖某种数据结构来实现的。算法的操作对象是数据结构。区别是数据结构关注的是数据的逻辑结构、存储结构有一集基本操作,而算法更多的是关注如何在数据结构的基本上解决实际问题。算法是编程思想,数据结构则是这些思想的基础。 6、时间复杂度: 在进行算法分析时,语句总是执行次数 T(n) 是关于问题规模 n 的函数。进而分析次数T(n)随规模n的变化情况并确定T(n)的数量级。算法的时间复杂度就是算法的时间度量,记作T(n) = O(f(n))。它表示随问题规模n的增大,算法的执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中,f(n)是问题规模n的某个函数。 算法的时间复杂度是衡量一个算法好坏的重要指标。一般情况下,随着规模n的增大,次数T(n)的增长较慢的算法为最优算法。常见时间复杂度从小到大依次排列:O(1) < O(log2n) < O(n) < O(n²)本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):