数据结构学习笔记:概论

目录

数据结构的概念

抽象数据类型的表示与实现

算法和算法分析

常见的数据结构

常见的算法


数据结构的概念

数据结构(英语:data structure)是计算机中存储、组织数据的方式。

数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素集合。它包含三方面的内容,逻辑关系、存储关系及操作。

数据结构的概念:数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科。

数据结构的描述:ADT和C语言

数据结构的内涵:数据对象及其内部数据元素的关系描述了数据结构的静态特征。

增删改查等基本操作(算法)描述了数据结构的动态特征。

数据结构=数据(数据对象)+结构(数据元素之间的关系)

 

 

抽象数据类型的表示与实现

数据结构的表示和实现:可用抽象数据类型定义数据结构及其操作。

算法和算法分析

算法是对数据局结构里面基本操作的描述

算法:是对特定问题求解步骤的一种描述,是指令的有限序列。

算法的5个特性:有穷性、确定性、可行性、输入、输出

有穷性指的是算法可以在有穷的步骤和有穷的时间被完成

确定性指的是语句没有歧义

可行性是指操作可以通过基本的一些操作来实现

输入输出是指算法可以有0个或多个输入和1个或多个输出

算法设计的要求:正确性、可读性、健壮性、效率和低存储量的要求

算法分析:可以通过算法效率度量来描述,第一是时间复杂度,第二是空间复杂度

算法效率的度量:时间复杂度(time complexity)

算法的存储空间需求:空间复杂度(space complexity)

#时间复杂度案例
sum =0
for(i=1;i<=n;i++)for(j=1;j<=i;j++)sum =sum+1;
//分析
函数具有两个for循环,案例是一个嵌套的for循环
外层的for循环是由i等于1变化到n,内层的for循环是由j等于1变化到n
i=1时,内层循环是循环一次
i=2时,内层循环是循环两次
......
i=n时,内层循环是循环n次
所以第四行代码执行次数为:f(n)=1=2+3+...+n=n(n+1)/2=n^2+0.5n时间复杂度:T(n)=O(f(n))=O(n^2+0.5n)=O(n^2)时间复杂度我们只取变化频率最高的项,即n方,所以最终时间复杂度是0n方
#空间复杂度案例:交换a和b的值
t=a;a=b;b=t;
程序段只需要1个辅助空间存储变量t。空间复杂度S(n)=O(1)

常见的数据结构

栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。

队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。

数组(Array):数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。

链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。

树(Tree):树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。

图(Graph):图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。

堆(Heap):堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。

散列表(Hash table):散列表源自于散列函数(Hash function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录。

常见的算法

数据结构研究的内容:就是如何按一定的逻辑结构,把数据组织起来,并选择适当的存储表示方法把逻辑结构组织好的数据存储到计算机的存储器里。算法研究的目的是为了更有效的处理数据,提高数据运算效率。数据的运算是定义在数据的逻辑结构上,但运算的具体实现要在存储结构上进行。一般有以下几种常用运算:

检索:检索就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。 插入:往数据结构中增加新的节点。 删除:把指定的结点从数据结构中去掉。 更新:改变指定节点的一个或多个字段的值。 排序:把节点按某种指定的顺序重新排列。例如递增或递减。

本文链接:https://my.lmcjl.com/post/14640.html

展开阅读全文

4 评论

留下您的评论.