ARTS Tip5 数据结构基本概念

2024-08-22 07:32

本文主要是介绍ARTS Tip5 数据结构基本概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据结构的研究内容:

  1. 研究数据元素之间的逻辑结构
  2. 研究数据在计算机内部的存储结构
  3. 研究如何在数据的逻辑结构和存储结构中实施有效的操作和处理

数据结构中数据之间的关系分为:

  1. 线性关系
  2. 非线性关系(非线性关系又分为:树关系和图关系)

数据之间的结构分为:

  1. 逻辑结构:体现数据元素之间的逻辑关系

  2. 存储结构(物理结构):数据在计算机内的表示,包含数据元素的表示和关系的表示。

存储结构又可以分为:

  1. 顺序存储:在顺序存储结构中(一般用一维数组)体现数据之间的关系。借助元素在内存中的位置表示元素之间的逻辑关系或者逻辑上相邻的节点存储在物理位置上相邻的存储单元里,节点的逻辑关系由存储单元的邻接关系来体现。

  2. 逻辑存储:一般采用指针实现数据之间的关系,包含链式结构和散列表及索引存储结构。借助元素存储地址的指针表示元素之间的逻辑关系或逻辑上相邻的节点在物理位置上可相邻,可不相邻,逻辑关系由附加的指针段表示。

(1)链式存储结构:利用指针直接表示数据元素之间的关系
(2)散列结构:根据节点的关键字,利用散列函数直接计算出该节点的存储地址
(3)索引存储结构:在存储节点信息的同时,还建立附加的索引表。索引表的每一项都是索引项,索引项一般形式:(关键字,地址),其中关键字是能唯一标识一个节点的那些数据项集合。索引存储结构分为稠密索引和稀疏索引。稠密索引是指每个节点在索引表中都有一个索引项的索引表;稀疏索引指一组节点在索引表中对应一个索引项的索引表。

数据类型:指一个值的集合以及在这些值上定义的一组操作的总称。

数据类型又根据是否允许分解分为:

  1. 原子类型:值不可再分的数据类型。比如java中的int类型

  2. 结构类型:值可以继续分解的数据类型。比如java中的数组。

根据数据结构特性在数据的生存期间变动情况分为:

  1. 静态结构:数据存在期不发生任何变动。

  2. 动态结构:在一定范围内结构大小可以发生变动。

数据元素是数据的基本单元。

数据元素可由一个或多个数据项组成。数据的基本物理单位是数据项。

数据项有逻辑形式和物理形式,用ADT给出的数据项的定义是逻辑形式,数据结构中对数据项的实现是其物理形式。

位(bit):计算机中表示信息的最小单位是二进制数的一位。

元素(节点):由若干位组成一个位串表示一个数据元素。

数据域:当数据元素由若干数据项组成时,对应于各个数据项的子位串就是数据域。

前驱节点:处于该节点之前的所有节点。

后继节点:处于该节点之后的所有节点。

直接前驱节点:与之相邻的前驱节点。

直接后继节点:与之相邻的后继节点。

开始节点:表中第一个节点。

终端节点:表中最后一个没有后继的节点。

抽象数据类型的定义:

由一个值和定义在该值域上的一组操作组成。按照值的不同特性分为:

  1. 原子类型:属于原子类型的变量的值是不可再分的。
  2. 固定聚合类型:属于该类型变量的值由确定数目的成分按照某种结构组成
  3. 可变聚合类型:属于该类型的变量的值的成分数目不确定,其中序列的长度是可变的。

算法:解决问题的一种方法或者一个过程。

一个完整的算法应该满足以下几条性质:

  1. 正确性。
  2. 确定性。
  3. 有穷性。
  4. 输入。
  5. 输出。

算法设计要求:

  1. 正确性。
  2. 可读性。
  3. 健壮性。
  4. 效率与低存储量需求

判断一个算法的好坏一般从两个方面考量,时间角度和空间角度。

度量一个程序的执行时间通常有 两种做法:

  1. 事后统计方法。

  2. 事前分析估算的方法。

(1)算法选用何种策略。

(2)问题规模。

(3)书写程序的语言。

(4)编译产生的机器代码质量。

(5)机器执行指令的速度。

参考书籍:《数据结构与算法分析 Java版》第二版

在这里插入图片描述

这篇关于ARTS Tip5 数据结构基本概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095635

相关文章

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

Python 内置的一些数据结构

文章目录 1. 列表 (List)2. 元组 (Tuple)3. 字典 (Dictionary)4. 集合 (Set)5. 字符串 (String) Python 提供了几种内置的数据结构来存储和操作数据,每种都有其独特的特点和用途。下面是一些常用的数据结构及其简要说明: 1. 列表 (List) 列表是一种可变的有序集合,可以存放任意类型的数据。列表中的元素可以通过索

【Rocketmq入门-基本概念】

Rocketmq入门-基本概念 名词解释名称服务器(NameServer)消息队列(Message Queue)主题(Topic)标签(Tag)生产者(Producer)消费者(Consumer)拉取模式(Pull)推送模式(Push)消息模型(Message Model) 关键组件Broker消息存储工作流程 名词解释 名称服务器(NameServer) 定义: 名称服务器

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo