【Ⅰ绪论】1.数据结构起源

news2024/11/26 17:50:19

一、起源

1、早期理解

人们都把计算机理解为数值计算工具

数值计算的特点:有数学方程,可以用计算机去做传统的数值计算

比如:一个线性回归的模型【机器学习】

①根据历史数据(黑点),去拟合这条线,得到这条线的方程f(x)

②给了一个新的x,则可以用f(x)去预测它的取值(比如x是学习时长,y是考研分数)

2、现实中

需要一些更科学有效的手段的帮助,才能更好地处理问题(非数值计算

树形结构

网状结构线性结构
比如文件夹的管理比如社交关系比如排队系统、学生学籍管理系统

数据结构在干嘛?

学科定义:是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系操作等相关问题的学科

例子1:QQ可能认识的人例子2:文件夹的管理

没有数学方程,是非数值计算

操作对象:每一个结点(用户)

用户之间的关系:是好友,或者不是好友

用户之间的操作:查询你的所有好友……

没有数学方程,是非数值计算

操作对象:每一个结点(文件夹)

结点之间的关系:父子关系

结点之间的操作:寻找某个父亲的孩子……

二、历史

1968年,美国的高德纳(Donald E.Knuth)教授在其所写的《计算机程序设计艺术》第一卷《基本算法》中, 较系统地阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构的课程体系

同年,数据结构作为一门独立的课程,在计算机科学的学位课程中开始出现

70年代初,出现了大型程序,软件也开始相对独立,结构程序设计成为程序设计方法学的主要内容

人们越来越重视“数据结构”,认为程序设计的实质是对确定的问题选择一种好的结构

程序设计=数据结构+算法

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

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

相关文章

【算法基础】快速排序(分治思想)

一、快速排序原理 1. 算法介绍 快速排序算法通过多次比较和交换来实现排序,其排序流程如下: (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(记左端为L,最右端为R) 分界点的选取有如下四种方法:(1)q[L];(2)q[(L+R)/2];(3)q[R];(4)随机选取 (2)…

node封装一个控制台进度条插件

说在前面 控制台的进度条大家都见得不少了吧?大家都知道控制台的进度条是怎么实现的吗?最近自己在写几个node脚本工具,期间有需要进度展示的一个需求,所以就顺手写了一个可以自定义的进度条插件,可以直接引入并配置使用…

【自然语言处理】情感分析(三):基于 Word2Vec 的 LSTM 实现

情感分析(三):基于 Word2Vec 的 LSTM 实现本文是 情感分析 系列的第 333 篇,前两篇分别是: 【自然语言处理】情感分析(一):基于 NLTK 的 Naive Bayes 实现【自然语言处理】情感分析…

web字体和图标 web字体 字体图标

目录web字体和图标web字体字体图标网站图标使用方法(font class 版本(推荐))图标离线使用方法图标使用方法(Unicode 版本)web字体和图标 web字体 用户电脑上没有安装相应字体,强制让用户下载该…

C++动态内存管理:new 和 delete

目录 一.前言 二.new和delete的基本使用 1.new/delete操作内置类型 三.定位new表达式(placement-new) 四.new操作数出现内存申请错误时的处理方式:抛异常 五.new和malloc的区别 一.前言 C沿用了C语言的底层内存管理机制: 然而在动态内存管理方面&am…

Java——三角形最小路径和

题目链接 leetcode在线oj题——三角形最小路径和 题目描述 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是…

AcWing 1057. 股票买卖 IV(状态机DP)

AcWing 1057. 股票买卖 IV (1)问题 (2)分析 这道题我们首先得明确一点,我们只有一支股票,只是这支股票在不同天有着不同的价格,因此我们可以把天作为单位划分不同的状态。同时这道题中还有一个…

极限存在准则 两个重要极限——“高等数学”

各位uu们你们好呀,今天小雅兰要学习的内容仍然是高等数学,是为:极限存在准则 两个重要极限。那现在就让我们一起进入高等数学的世界吧 引例 夹逼准则 准则Ⅰ 数列的夹逼准则 准则Ⅰ’ 函数的夹逼准则 重要极限Ⅰ 准则Ⅱ 单调有界数列必有极…

Servlet进阶1:Servlet原理

Servlet进阶一、Dispatcher二、doGet、doPost、Service方法的区别1. 三者联系2. 使用规则三、Servlet的生命周期四、Servlet、Servlet容器、Web服务器一、Dispatcher 一个Web App就是由一个或多个Servlet组成的,每个Servlet通过注解说明自己能处理的路径。早期的Se…

FreeRTOS-信号量详解

✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!! 📃个人主页:rivencode的个人主页 🔥系列专栏:玩转FreeRTOS 💬保持…

【algorithm】认真讲解前缀和与差分 (图文搭配)

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 📣系列专栏:AcWing算法笔记 今天的月色好美 文章目录前言一、前缀和算法1.1 什么是前缀和?1.2 一维前缀和二、二维前缀和三、一维差分四…

Java---微服务---分布式搜索引擎elasticsearch(1)

分布式搜索引擎elasticsearch(1)1.elasticsearch1.1.了解ES1.1.1.elasticsearch的作用1.1.2.ELK技术栈1.1.3.elasticsearch和lucene1.1.4.为什么不是其他搜索技术?1.1.5.总结1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引1.2.3.正向和倒排1.3.es…

表单标签的使用

1、input标签 场景:在网页中显示收集用户消息的表单效果,如登录页、注册页 通过type属性值的不同,展示不同的效果 type属性值说明text文本框,用于输入单行文本password密码框,用于输入密码radio单选框,用…

检查 malloc 函数返回内容的四个理由

写在前面: 一些开发人员可能对检查不屑一顾:他们故意不检查malloc函数是否分配了内存。他们的推理很简单——他们认为会有足够的记忆。如果没有足够的内存来完成操作,请让程序崩溃。似乎是一个糟糕的事实。 注意。在本文中,mall…

Opencv 之 DNN 与 CUDA综述

Opencv 之 DNN 与 CUDA 目录 Opencv官方手稿(包含各模块API介绍及使用例程) Opencv在github的仓库地址:https://github.com/opencvOpencv额外的测试数据 下载:https://github.com/opencv/opencv_extra #可通过git下载拉取 git c…

【算法练习】删除链表的节点

题源:牛客描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。1.此题对比原题有改动2.题目保证链表中节点的值互不相同3.该题只会输出返回的链表和结果做对比,所以若使用 C 或 C 语言&#…

pix2pix(二)训练图像尺寸及分配显卡

背景:新的数据集上,图像的大小为496496,与原尺寸512512不一样,不知道能否直接运行。另外,我们现在有了四张空余显卡服务器,并且新数据集的数据量较大,我们有空余的显卡资源加快训练。 目的&…

C++ 模板

在学习stl之前,我们就已经略微讲解了一些模板的知识,而现在,我们来进一步了解一下模板的相关知识 初步了解 目录 一. 非类型模板参数 二. 模板的特化 全特化 偏特化 三. 模板分离编译 四. 总结 一. 非类型模板参数 模板参数…

C进阶_结构体内存对齐

请看下面的代码&#xff0c;输出结果是多少&#xff1f; #include <stdio.h> int main() {struct S1{char c1;int i;char c2;};printf("%d\n", sizeof(struct S1));struct S2{char c1;char c2;int i;};printf("%d\n", sizeof(struct S2));return 0;…

Xmake v2.7.6 发布,新增 Verilog 和 C++ Modules 分发支持

Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量&#xff0c;没有任何依赖&#xff0c;因为它内置了 Lua 运行时。 它使用 xmake.lua 维护项目构建&#xff0c;相比 makefile/CMakeLists.txt&#xff0c;配置语法更加简洁直观&#xff0c;对新手非常友好&#x…