数据结构中的相关的概念

什么是数据

数据:描述信息的载体,数据能够被计算机识别并存储,能够参与计算机内部的运算。

什么是结构

结构:描述的是数据与数据之间的关系,数据和数据之间存在逻辑关系:线性关系(链表),层次关系(树),网状关系(图)。

线性结构:头节点只有后继节点,尾节点只能有前驱节点,其它的节点都是有一个前驱节点和一个后继节点的。

数据网络架构是什么 数据网的网络结构_数据网络架构是什么


层次结构:根节点没有前驱节点,其它的节点一定会有一个前驱节点,后继节点可以有0、1、多个

数据网络架构是什么 数据网的网络结构_链表_02


网状结构:节点可以有多个前驱节点也可以有多个后继节点。

数据网络架构是什么 数据网的网络结构_数据结构_03

什么是数据结构

数据结构指的是数据元素及数据元素之间的相互关系,或组织数据的形式。有人认为:

按照某种逻辑关系组织起来的一批数据,应用计算机语言,按照一定的存取方式把它们存储到计算机存储器中,并为这些数据定义一个运算集合,就称为一个数据结构。

数据结构 :指数据之间的相互关系,包含下面三方面的内容:

逻辑结构:表示数据运算之间的抽象关系(如邻接关系、从属关系等),按每个元素可能具有的直接前趋数和直接后继数将逻辑结构分为“线性结构”和“非线性结构”两大类。(人理解的数据的关系)

存储结构:逻辑结构在计算机中的具体实现方法,分为顺序存储方法、链接存储方法、索引存储方法、散列存储方法(哈希)。(计算机理解的结构)

数据运算:对数据进行的操作,如插入、删除、查找、排序等

数据结构总览

数据网络架构是什么 数据网的网络结构_链表_04

算法的相关知识

什么是算法

算法(Algorithm)是一个有穷规则(或语句、指令)的有序集合。它确定了解决某一问题的一个运算序列。对于问题的初始输入,通过算法有限步的运行,产生一个或多个输出。

算法的特点

(1) 有穷性 —— 算法执行的步骤(或规则)是有限的;

(2) 确定性 —— 每个计算步骤无二义性;

(3) 可行性 —— 每个计算步骤能够在有限的时间内完成;

(4) 输入 —— 算法有零个或多个外部输入;

(5) 输出 —— 算法有一个或多个输出。

这里要说明的是,算法与程序既有联系又有区别。二者都是为完成某个任务,或解决某个问题而编制的规则(或语句)的有序集合,这是它们的共同点。区别在于:其一,算法与计算机无关,但程序依赖于具体的计算机语言。其二,算法必须是有穷尽的,但程序可能是无穷尽的。其三,算法可忽略一些语法细节问题,重点放在解决问题的思路上,但程序必须严格遵循相应语言工具的语法。算法转换成程序后才能在计算机上运行。另外,在设计算法时,一定要考虑它的确定性,即算法的每个步骤都是无二义性的(即一条规则不能有两种以上的解释)

什么样的算法属于好的算法

(1)运算的时间短(时间复杂度低)

(2)程序占用的内存空间少(空间复杂度小)

(3)算法要便于维护

时间复杂度的含义及表示方法

T(n) = O(f(n))

T:程序运行的时间

n:程序执行的步数

O():时间复杂度的表示方法

f(n):语句执行的频度

数据网络架构是什么 数据网的网络结构_算法_05


(1)O(1)常数阶时间复杂度

void swap(int *a,int *b)
{
    *a ^= *b;
    *b ^= *a;
    *a ^= *b;
}

(2)O(n)时间复杂度

sum=0;
for(i=0;i<n;i++){
    sum+=i;
}

(3)O(n2)时间复杂度

for(i=0;i<n-1;i++){
    for(j=0;j<n-i-1;j++){
        //排序执行的步骤 (n-1)*(n-i-1) = xn^2+yn+z;
    }
}

注:O(n3)和O(nk)的时间复杂度的计算方法和上述的一样。

(4)O(log2n)时间复杂度(常被记着作为O(logn))

i=1
while(i<=n){
    i = i * 2;
}
2^x = n
x = log2^n

(4)O(nlog2n)时间复杂度

for(int j=0;j<k;j++){
    i=1
    while(i<=n){
        i = i * 2;
    }
}

数据结构全览

数据网络架构是什么 数据网的网络结构_数据网络架构是什么_06


程序 = 数据结构 + 算法