数据结构基础知识(一)

说明:以下内容中的书是指《数据结构与算法(JAVA语言版)》周鹏版,部分内容已经按照搜索引擎的内容修改过。

在数据结构的实现中我们可以很好的将数据结构中的一些基本概念和 Java 语言中的一些概念对应起来。

数据元素可以对应到类,其数据项就是类的成员变量,某个具体的数据元素就是某个类的一个实例;数据的顺序存储结构与链式存储结构可以通过一维数组以及对象的引用来实现;抽象数据类型也可以对应到类,抽象数据类型的数据对象与数据之间的关系可以通过类的成员变量来存储和表示,抽象数据类型的操作则使用类的方法来实现。

数据结构分为:逻辑结构、存储结构。
逻辑结构分为:集合、线性结构、树形结构、图形结构。
    --线性表、栈、队列、树、图等逻辑结构。
        --其中线性表、栈、队列为线性结构,树和图都是非线性结构。
        
逻辑结构可以采用两种方法来描述:二元组、图形。
    --二元组表示形式: DS = ( D, S )   【Data Structure】
        --其中 D 是数据元素的集合; S 是 D 中数据元素之间的关系集合,并且数据元素之间的关系是使用序偶来表示的。序偶是由两个元素 x 和 y 按一定顺序排列而成的二元组,记作<x , y>, x 是它的第一元素, y 是它的第二元素。
        
    --当使用图形来表示数据结构时,是用图形中的点来表示数据元素,用图形中的弧来表示数据元素之间的关系。如果数据元素 x 与 y 之间有关系<x , y>,则在图形中有从表示 x 的点出发到达表示 y 的点的一条弧。



现在,另数据结构的二元组形式为:DS = (D, S),则:

  1. 如果 D != null,而S == null,则该数据结构为集合结构。
  2. 如果 D = {01, 02, 03, 04, 05},S = {<02,04>, <03,05>, <05,02>, <01,03>},则该数据结构是线性结构。
    在这些数据元素中有一个可以被称为“第一个”的数据元素;还有一个可以被称为“最后一个”的数据元素;除第一个元素以外每个数据元素有且仅有一个直接前驱元素,除最后一个元素以外每个数据元素有且仅有一个直接后续元素。这种数据结构的特点是数据元素之间是 1对 1 的联系,即线性关系。
  3. D = {01, 02, 03, 04, 05, 06}
    S = {<01,02>, <01,03>, <02,04>, <02,05>, <03,06>}
    除了一个数据元素(元素 01)以外每个数据元素有且仅有一个直接前驱元素,但是可以有多个直接后续元素。这种数据结构的特点是数据元素之间是 1 对 N 的联系,即树结构。
  4. D = {01, 02, 03, 04, 05}
    S = {<01,02>, <01,05>, <02,01>, <02,03>, <02,04>, <03,02>,<04,02>, <04,05>, <05,01>, <05,04>}:
    每个数据元素可以有多个直接前驱元素,也可以有多个直接后续元素。这种数据结构的特点是数据元素之间是 M 对 N 的联系,即图结构。

  



存储结构分为:顺序存储结构、链式存储结构。

算法( algorithm) 是指令的集合,是为解决特定问题而规定的一系列操作。

在计算机资源中,最重要的就是时间与空间。评价一个算法性能的好坏,实际上就是评价算法的资源占用问题。

算法运行时间的确定问题,这个问题被称之为算法的时间复杂性;算法的空间复杂性是由算法运行时使用的空间来评价的。但算法的空间复杂性是以时间复杂性为上界的!

一般来说,不存在固定的方法,使用它就可以得到一个算法的时间复杂度。但是在分析算法的时间复杂度时有一些常用技术是可以使用的。

计算循环次数、分析最高频度的基本操作、最佳最坏及平均情况分析、均摊分析。

时间: 2024-11-05 04:49:15

数据结构基础知识(一)的相关文章

《计算机科学导论》之数据结构基础知识

<计算机科学导论(第二版)>  11章   数据结构 11.1  引言  1.为什么要使用数据结构? 尽管单变量在程序设计语言中被大量使用,但是它们不能有效地解决复杂问题.此时考虑使用数据结构. 2.数据结构是什么? 数据结构是相互之间存在一种或多种特定关系的数据元素的集合. 3.三种数据结构 数组: 记录; 链表: 大多的编程语言都隐式实现了前两种,而第三种则通过指针和记录来模拟. 11.2  数组 1.为什么使用数组? 为了处理大量的数据,需要一个数据结构,如数组.当然还有其他的数据结构.

数据结构基础知识1

一. 理解并能快速.准确写出代码.(★★★★★) 1. 几种常见排序( 代码 ) 基于比较的排序算法: 下界是 nlgn 1.1 SelectionSort:每次选出最下的元素,放在当前循环最左边的位置. 1.2 BubbleSort:每次比较相邻的两个数,使得最大的数像气泡一样冒到最右边. 1. 3 InsertionSort:每次拿起一个数,插入到它左边数组的正确位置. 1.4 QuickSort:选择一个数,作为标准,小于它的放在左边,大于它的放在右边.并把它放在中间:递归地对左右子数组进

数据结构基础知识整理(目录)

[数据结构第一周]最大子列和问题整理 [数据结构第二周]线性表知识点整理 [数据结构第二周]堆栈知识点整理 [数据结构第二周]队列知识点整理 [数据结构第三周]树知识点整理(上) [数据结构第四周]树知识点整理(下)[二叉搜索树] [数据结构第四周]树知识点整理(下)[平衡二叉树] [数据结构第四周]树知识点整理(下)[堆] [数据结构第五周]图(上) [数据结构第六周]图(下)[最短路径问题] [数据结构第七周]排序(上) [数据结构第八周]排序(下)[快速排序]

数据结构基础知识

数据结构之链表 数据结构之栈和队列 数据结构之二叉树 数据结构之排序 数据结构之递归

数据结构—基础知识

首先了解一下数据结构中的概念(只为了对其有了感性认识) 数据:描述客观事物的符号,是计算机中可以操作的对象,能够被计算机识别,并输入给计算机处理的集合符号. 数据不仅仅包括数值,还包括视频.音频.图片等等 数据元素:是组成数据的.具有一定意义的基本单位,在计算机中通常作为一个整体进行处理,也称为记录. 数据项:一个数据元素由若干个个数据项组成. 可以将数据元素理解我数据库中的一条记录,而数据项使其对应的属性.数据项是数据不可分割的最小单位.数据项是数据的最小单位,数据元素是数据结构中讨论的最小单

学习java数据结构基础知识之队列

队列是先进先出. 利用java语言实现队列代码: /* * 队列 */ public class Queue { private int maxSize; //最大队列 private long[] queArray; //队列数组 private int front; //队头 private int rear; //队尾 private int nItems; //当前队列元素个数 //构造函数 public Queue(int s) { super(); this.maxSize = s;

学习java数据结构基础知识之链表

public class Link { public int iData; public double dData; public Link next; public Link(int iData, double dData) { super(); this.iData = iData; this.dData = dData; } public void displayLink(){ System.out.print("{"+iData+","+dData +&qu

数据结构(一)之基础知识

学习数据结构主要源于以下原因: 在工作中我是用meteor在做项目,前后台都要写,服务端是用的node.之前有和同事做过一个邮箱功能,性能测试时并发量一高就发送失败.我认为处理并发量的问题应该需要数据结构与算法和设计模式这三点来优化.这是往大了说,细说就是工作中,功能每次都是加班超快赶,在多人合作下,如果代码结构与逻辑混乱,后期维护困难,功能不好扩展.由于我们组都是前端人员接下这个项目,对于数据库的设计经验缺乏,才一再出现性能问题,所以我认为学习数据结构与算法尤为重要.本人也是正在学习中,有问题

PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类

一.程序设计 1.设计功能系统--数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理--原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的特性--PHP框架的差异和优缺点 三.算法与数据结构 1.常见算法--算法的概念.时间复杂度和空间复杂度.常见排序算法.常见查找算法 2. 3. 4. 四.高并发解决方案 1. 2. 原文地址:https://www.cnblogs.com/darklights/p/9275751.html