【数据结构与算法】绪论

news2024/9/27 21:19:03

目录

一、数据结构研究

二、基本概念和术语

2.1 基本概念

2.2 什么是数据结构?

2.3 数据结构内容

2.4 逻辑结构种类

2.5 存储结构种类

2.6 数据类型和抽象数据类型

三、算法和算法分析

3.1 算法的定义

3.2 算法的特性

3.3 算法设计要求

3.4 算法好坏评判标准

四、知识总结


一、数据结构研究

数据结构通常是用来研究非数值计算的程序设计中的线性表、树和图,以及它们中数据结点之间的关系和对这些数据结点可进行的操作学科。

二、基本概念和术语

2.1 基本概念

  • 数据元素:是组成数据的基本单位通常作为一个整体来进行考虑和处理,如:学生表数据中的每条记录即为一个数据元素也被称为结点或顶点。
  • 数据项:构成数据元素的最小单位如:学生表中的每条记录的属性。

        三者之间的关系:数据(学生表)>数据元素(学生记录)>数据项(学号或姓名等)。

  • 数据对象:将性质种类相同的数据元素(记录)放在一起构成的集合如:正整数数据对象N={1,2,3,4,5,...}
2.2 什么是数据结构?

说白了数据结构就是将一些数据元素(记录)放在一起构成一个集合,并且这些数据元素之间存在着一种或多种特定的联系。

2.3 数据结构内容
  • 逻辑结构:在大脑中想象出来的数据元素之间的逻辑邻接关系。
  • 物理存储结构: 数据元素在物理内存中的存放表现形式。
  • 数据的运算和实现: 在内存中操作这些数据元素。
2.4 逻辑结构种类
  • 划分方式一:线性结构和非线性结构。其中:

线性结构(一对一):是指只有一个开始结点和终端结点且两结点之间的数据元素只有一个前趋和后继结点,相邻结点之间呈现出一对一的关系如:学生表中的记录即线性表、栈、队列、串。

非线性结构是指数据元素(即结点)之间不是一对一的关系而是存在一对多如树或多对多的关系如图。

树(一对多):

 图(多对多):

  • 划分方式二:

集合结构:数据元素之间除了都属于同一个集合外无其它任何关系。

线性结构:数据元素之间存在一对一的线性关系。

树形结构:数据元素之间存在着一对多的层次关系。

图状或网状结构:数据元素之间存在着多对多的任意关系。

2.5 存储结构种类

顺序存储结构:用一组连续的存储单元来存储数据元素其元素之间的逻辑关系根据存储位置的不同来表示如:C语言中用数组来存放具有一定顺序的数据元素。

链式存储结构:将数据元素存放到任意位置的存储单元中,根据存储单元中保存的下一个元素的指针地址来表示数据元素间的前后顺序如:C语言中使用带“数据域+指针域”的方式来表示链式存储。

索引存储结构:在存储数据元素的同时还为其建立一张索引表来记录结点存放的内存地址位置。

 

散列存储结构:根据数据元素的关键字结合某种公式直接计算出该数据结点预存放的内存地址位置。

2.6 数据类型和抽象数据类型

数据类型: 一组性质相同的值的集合以及定义在此集合上可以进行的操作,如:int、char。

抽象数据类型:从问题中抽象出的数据、不考虑其在计算机内存中的存储形式以及运算实现算法;其包括数据元素、数据元素之间的关系、以及可以对这些数据元素进行的逻辑运算操作。

定义格式如下:

说明:抽象数据类型可以用编程语言来描述实现即用编程语言中已有的数据类型来对应抽象数据类型的数据部分,用函数(方法)来描述抽象数据类型的操作部分。例如:

 

 

三、算法和算法分析

3.1 算法的定义

算法就是求解问题的方法和步骤描述,可以使用自然语言(中文、英语等)、流程图、伪代码、编程语言等来描述实现。

3.2 算法的特性
  • 有穷性:一个算法总是能在执行有限时间后结束。
  • 确定性:算法中的每条指令必须有确切的含义没有二义性即相同的输入会得到相同的输出。
  • 可行性:算法的描述可以通过具体的操作来实现如:C语言。
  • 输入:一个算法有0或多个输入
  • 输出:一个算法有一个或多个输出。
3.3 算法设计要求
  • 正确性:给出几个刁难的、苛刻的输入仍能获取正确的输出结果。
  • 可读性:要求算法的描述是可以被人们看懂理解的。
  • 健壮性:对于一些非法错误的输入,程序不会出现奇怪的信息、终止执行而是对其做出相应的处理并接着运行。
  • 高效性:算法的设计在执行时间和存储空间上占用要少。
3.4 算法好坏评判标准
  • 时间复杂度。指程序运行所消耗的时间。一般不会以编写算法程序并运行来获取算法的时间复杂度,而是通过找出算法中执行次数最多的语句并求出它的数量级来作为算法的时间复杂度,简记“T(n)=O(f(n))”其中O表示取数量级。

步骤:

1、从代码中找出执行次数最多的语句作为基本语句(*在循环中嵌套层次最深的语句往往是执行次数最多的)。

2、计算基本语句执行的次数从而得到f(n)。

3、根据公式求出数量级用“O”符号表示取数量级。

说明:时间复杂度T(n)按数量级递增顺序如下图(越往右算法的时间复杂度越高): 

 

  •  空间复杂度:指算法在执行过程中所消耗的存储空间。一般将代码中临时辅助变量所占用的空间个数来作为空间复杂度的数量级f(n),简记为"S(n)=O(f(n))",n为问题的大小规模。

说明:T(n)时间复杂度和S(n)空间复杂度在实际场景中往往存在矛盾即此消彼长的关系。

四、知识总结

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1507018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mediapipe 实现姿态分析——举手检测

目录 人体姿态检测 效果展示 举手检测 行业应用 代码实现 代码分析 效果展示 代码修改,一只手举起即可 总结 啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦^_^啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦♪(^∇^*)啦啦啦…

计算机网络 —— 运输层

运输层 5.1 运输层概述 运输层的主要任务是,如何为运行在不同主机上的应用进程提供直接的通信服务。运输层协议又称为端到端协议。 根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输协议,即面向连接的TCP和无连接的UDP 5.2…

VBA(学习笔记)

1. 数据类型 变量定义:Dim 变量名 As 数据类型 变量赋值:变量名 值 1.1 数值型 1.1.1 整数 (1) Byte:1字节(0~255) (2) Integer:2字节(-32768~32767) (3) Long:4…

ubuntu18.04下zookeeper安装与简单使用

下载与解压 官网下载地址 Apache ZooKeeper 解压 tar -zxvf zookeeper-3.4.10.tar.gz 环境准备 zookeeper基于java开发,因此首先需要安装java的jdk包 sudo apt-get install openjdk-8-jdk修改配置 进入解压目录里的conf文件夹内 mv zoo_sample.cfg zoo.cfg …

表单进阶(6)-字段集

带框的字段集用fieldse &#xff0c;字段集标头用legent 选中的样式&#xff1a; 圆点用radio&#xff0c;方框用checkbox <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" cont…

Qt QListwidget与QStackedWidget或QTableWidget实现多界面切换的效果

文章目录 效果图使用QStackedWidget实现使用QTableWidget实现总结 效果图 使用QStackedWidget实现 QStackedWidget提供了一种堆栈式的界面布局方式。功能&#xff1a;QStackedWidget允许开发者在一个固定区域内显示多个子窗口或页面&#xff0c;但同时只显示其中一个子窗口&am…

腾讯云轻量服务器流量用完了怎么办?还能继续用吗?

腾讯云轻量服务器流量用完了怎么办&#xff1f;超额部分的流量另外支付流量费&#xff0c;流量价格为0.8元/GB&#xff0c;会自动扣你的腾讯云余额&#xff0c;如果你的腾讯云账号余额不足&#xff0c;那么你的轻量应用服务器会面临停机&#xff0c;停机后外网无法访问&#xf…

【大厂AI课学习笔记NO.75】人工智能产业的就业岗位分布

见上图&#xff0c;这是详细的人工智能产业的就业岗位分布情况。 就业领域包括物联网、智能芯片、机器学习、深度学习、计算机视觉CV、自然语言处理NLP、智慧语音、机器人、知识图谱等领域。 人工智能作为当今科技革命与产业变革的重要驱动力量&#xff0c;其就业岗位分布广泛…

什么是Python网络爬虫

Python网络爬虫是一种自动化获取网页内容的程序。它可以通过发送HTTP请求&#xff0c;获取网页的HTML代码&#xff0c;并从中提取所需的数据。下面是一个简单的概述&#xff0c;帮助您理解Python网络爬虫的基本原理。 导入所需的库&#xff1a; 在Python中&#xff0c;我们可以…

系统架构设计师精讲班视频教程

本课程将深入探讨系统架构设计原理及实际应用。学员将学习高可用性、扩展性和安全性等方面的设计技巧&#xff0c;掌握微服务架构、云计算和容器化等最新趋势。通过案例分析和项目实践&#xff0c;帮助学员成为系统架构设计领域的专家。 课程大小&#xff1a;7G 课程下载&…

20240310-1-Java后端开发知识体系

Java 基础 知识体系 Questions 1. HashMap 1.8与1.7的区别 1.71.8底层结构数组链表数组链表/红黑树插入方式头插法尾插法计算hash值4次位运算5次异或运算1次位运算1次异或运算扩容、插入先扩容再插入先插入再扩容扩容后位置计算重新hash原位置或原位置旧容量 (1) 扩容因子…

SpringMVC09、Ajax

9、Ajax 9.1、简介 AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。 Ajax 不是一种新的编程语言&#xff0c;而是一种用于创建更好更快以及交互…

第十五届蓝桥杯模拟考试III_物联网设计与开发

编程题 一、基本要求 使用大赛组委会提供的四梯/国信长天物联网省赛套装&#xff08;基于STM32L071KBU微控制器设计&#xff09;&#xff0c;完成本试题的程序设计与调试。程序编写、调试完成后&#xff0c;选手需提交两个LoRa终端对应的hex文件&#xff0c;LoRa终端A对应的文…

解决轻松解决谷歌浏览器火狐浏览器主页被360导航篡改问题浏览器启动页被篡改为360导航栏等

重置Chrome浏览器设置 尝试重置chrome浏览器全部设置。进入Chrome设置页&#xff0c;点击最下方的“高级设置”。 将鼠标滚到最底部&#xff0c;点击“重置设置” 然后关闭浏览器&#xff0c;重新打开即可。 包括ie几乎所有浏览器都可以重置... 重置火狐浏览器设置 设置——主…

VUE+HBuilder的uniapp技术路线开发应用使用总结

使用总结 本来想做一个记录日常数据的应用&#xff0c;主要在Android端使用&#xff0c;后来发现在uniapp中使用sqllite数据库不是像原生中那样简单(所以当前准备去进行另一个路线&#xff0c;就是给我使用的电脑都安装一个portalble的服务端&#xff0c;用来记录数据&#xf…

linux环境下线程的介绍和POSIX线程接口应用实例

目录 概述 1 线程概念 1.1 线程的特性 1.2 线程的运行状态 2 线程API 2.1 pthread的数据类型 2.2 pthread函数的返回值 2.3 POSIX线程接口 2.3.1 创建线程函数pthread_create 2.3.2 终止线程 2.3.3 线程ID 2.3.4 连接已终止线程 2.3.5 线程分离 3 线程VS进程 4 线…

电子电器架构 —— 车载网关路由表和刷写场景

电子电器架构 —— 车载网关路由表和刷写场景 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 PS:小细节,本文字数5000+,详细描述了网关在车载框架中的具体性能设置。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有…

leetcode 热题 100_搜索二维矩阵

题解一&#xff1a; 二叉搜索树&#xff1a;从矩阵右上角观察&#xff0c;结构类似二叉搜索树&#xff0c;因此可以用类似的解法来做。具体做法是双指针从右上角开始&#xff0c;向左下角逐步搜索&#xff0c;如果当前值比目标值大&#xff0c;则向下移动&#xff0c;如果当前值…

MQ高可用相关设置

文章目录 前言MQ如何保证消息不丢失RabbitMQRocketMQKafkaMQ MQ如何保证顺序消息RabbitMQRocketMQKafka MQ刷盘机制/集群同步RabbitMQRocketMQKafka 广播消息&集群消息RabbitMQRocketMQ MQ集群架构RabbitMQRocketMQKafka 消息重试RabbitMQRockeMqKafka 死信队列RocketMQKaf…

Linux网络套接字之TCP网络程序

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、接口介绍 1.socket 2.listen 3.accept…