数据结构与算法笔记(1)基本概念

1.什么是数据结构

用计算机解决一个具体的问题,需要以下几个步骤:

  1. 从具体问题抽象出一个适当的数学模型;
  2. 设计一个解此数学模型的算法;
  3. 编出程序;
  4. 进行测试、调整直至得到最终解答。

寻求数学模型的实质:

分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。

很多问题求解最后都转化为求解数学方程或数学方程组。如:求解梁架结构中应力的数学模型为线性方程组。预报人口增长情况的数学模型为微分方程。然而:当计算机进入非数值计算领域,特别是用在管理上的时候,计算机的操作对象之间的关系就无法用数学方程加以描述了。非数值计算问题的数学模型正是本课程要讨论的数据结构。

数据结构是一门研究非数值计算的程序设计问题时处理的操作对象以及它们之间的关系和操作等等的学科。

  • 解决数值计算问题的中心:   建立适当的数学模型。
  • 解决非数值计算问题的中心:   寻找适当的数据结构

2.数据结构研究的内容

数据结构的讨论一般涉及以下三个方面的内容:

  1. 数据成员以及它们相互之间的逻辑关系,也称为数据的逻辑结构,简称为数据结构;
  2. 数据成员及其关系在计算机存储器内的存储表示,也称为数据的物理结构,简称为存储结构;
  3. 施加于该数据结构上的操作。

3.基本概念和术语

  • 数据(Data): 是对信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数值型+非数值型
  • 数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。
  • 数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。
  • 数据结构(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。

4.数据的逻辑结构(数据结构)

相互之间存在一种或多种特定关系的数据元素的集合。

4.1.元素(结点)类型:

  • 基本数据类型:整型、实型、布尔型……
  • 复合数据类型:数组、结构体、类

4.2.结点间的关系——结构

  • 集合:数据元素间除“同属于一个集合”外,无其它关系
  • 线性结构:一个对一个,如线性表、栈、队列
  • 树形结构:一个对多个,如树
  • 图状结构:多个对多个,如图

5.数据的物理结构(存储结构)

数据的逻辑结构在计算机中的表示和实现。包含数据元素的表示和关系的表示。

数据元素的表示:通常用位串表示一个数据元素。例,用八位表示一个字符、三十二位表示一个整数

数据元素之间关系的表示

  • 顺序存储结构:结点间的逻辑关系由存储单元的邻接关系来体现。通常顺序存储结构是借助于语言的数组来描述的。
  • 链式存储结构:不要求逻辑上相邻的结点物理上也相邻,结点间的逻辑关系是由附加的指针字段表示的。

5.1.顺序(sequential)的方法

  • 用一块无空隙的存储区域存储数据称为顺序存储
  • 顺序存储把一组结点存储在按地址相邻的顺序存储单元里,结点间的逻辑后继关系用存储单元的自然顺序关系来表达
  • 顺序存储法为使用整数编码来访问数据结点提供了便利

5.2.链接(linked)的方法

  • 利用指针,在结点的存储结构中附加指针字段称为链接法。两个结点的逻辑后继关系可以用指针的指向来表达
  • 任意的逻辑关系r,也可以使用这种指针地址来表达。一般的做法是将数据结点分为两部分:
  1. 一部分存放结点本身的数据,称为数据字段
  2. 另一部分存放指针,称指针字段,链接到某个后继结点,指向它的存储单元的开始地址。多个相关结点的依次链接就会形成链索

5.3.索引(indexing)的方法

  • 索引法是顺序存储法的一种推广,它也使用整数编码来访问数据结点位置
  • 索引方法是要建造一个由整数域Z映射到存储地址域D的函数Y:Z?D,把结点的整数索引值 z∈Z映射到结点的存储地址d∈D 。它称为索引函数,一般而言它并不象数组那样,是简单的线性函数。

5.4.散列(hashing)的方法

  • 散列方法是索引方法的一种延伸和扩展
  • 利用一种称为散列函数(hash functions)进行索引值的计算,然后通过索引表求出结点的指针地址
  • 对任意的 s∈ S,散列函数 h(s)=z,z∈ Z

6.算法的描述

算法特性

算法设计的要求、衡量算法优劣的标准

7.小结

时间: 2024-11-09 10:36:40

数据结构与算法笔记(1)基本概念的相关文章

java数据结构与算法之树基本概念及二叉树(BinaryTree)的设计与实现

[版权申明]未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53727333 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设

数据结构与算法笔记 - 绪论

数据结构与算法笔记 - 绪论 1. 什么是计算2. 评判DSA优劣的参照(直尺)3. 度量DSA性能的尺度(刻度)4. DSA的性能度量的方法5. DSA性能的设计及其优化 x1. 理论模型与实际性能的差异x2. DSA优化的极限(下界) 计算机与算法 计算机科学(computer science)的核心在于研究计算方法与过程的规律,而不仅仅是作为计算工具的计算机本身,因此E. Dijkstra及其追随者更倾向于将这门科学称作计算科学(computing science). 计算 = 信息处理

数据结构与算法导论之基本概念和术语介绍

为了与大家取得"共同的语言",下面对一些概念和术语赋予确定的含义. 1.数据(data):对客观事物的符号表示,在计算科学中指所有能输入到计算机中并被计算机程序处理的符号总称. 2.数据元素(data element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理.一个数据元素可以由若干个数据项(data item)组成,数据项是数据不可分割的最小单位. 3.数据对象(data object):性质相同的数据元素的组合,是数据的一个子集. 总结而言,数据.数据对象.数

数据结构与算法概述(基本概念)

什么是数据结构:数据 + 关系 关系可分为:集合,线性结构,树结构,图结构或网状结构. 存储结构:顺序存储,链式存储,索引存储,散列存储. 数据类型:原子类型,结构类型 1.算法的时间复杂度 2.算法的空间复杂度 2.1 算法本身占用的空间 2.2 算法的运行时占用的空间 2.3 算法运行时临时占用的空间

数据结构 排序算法 笔记

/* 冒泡排序 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序 */ # include <stdio.h> # define LEN 6 void bubble_sort(int *, int); int main(void) { int arry[LEN] = {6, 2, 4, 1, 5, 9}; int i; for (

数据结构与算法笔记(3) 排序算法基础

1.什么是排序 排序就是将一个数据元素(或记录)的任意序列,通过一定的方法重新排列成一个按关键字有序的序列的过程. 2.排序的稳定性 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的:否则称为不稳定的. 稳定的排序的优点是,从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用. 例如,假设一个班的学生已经按照学号大

【4】学习JS 数据结构与算法笔记

第一章 JS 简介 1. 环境搭建的三种方式 1. 下载浏览器 2. 使用 Web 服务器 ( XAMPP ) 3. 使用 Node.js 搭建 Web 服务器 4. 代码地址>> 2. JS 语法

数据结构和算法(What Why How)

数据结构和算法是什么? 从广义上讲,数据结构就是指一组数据的存储结构.算法就是操作数据的一组方法. 从狭义上讲,是指某些著名的数据结构和算法,比如队列.堆.栈.二分查找.动态规划等. 数据结构和算法有什么关系? 数据结构和算法是相辅相成的.数据结构是为算法服务的,算法要作用在特定的数据结构之上.因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构. 为什么要学数据结构和算法? 如果不学数据结构和算法: 难以通过大公司的面试 编写的代码运行效率低下,占用存储空间大 写出来的框架Bug多.

java数据结构与算法之平衡二叉树(AVL树)的设计与实现

[版权申明]未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53892797 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设