数据结构与算法(一)基础概念

基础概念

数据结构讨论的范畴,算法、数据结构概念,算法和算法的度量

算法讨论的范畴

算法:处理问题的策略。

数据结构:问题的数学模型(非数值计算)及其上的操作在计算机中的表示和实现。数值计算使用计算数学。

数据结构

算法:处理问题的策略。

数据结构:带结构的数据元素的集合。

数据

可输入到计算机中且被计算机处理的符号集合。

数据元素

数据中的一个个体,数据结构中讨论的基本单位。

数据项

数据结构中讨论的最小单位。数据元素是数据项的集合。

数据的逻辑结构

线性结构、树形结构、图状结构、集合结构

数据结构形式定义

数据结构=(D,S),D是数据元素的有限集,S是D上关系的有限集。

数据的存储结构

逻辑结构在存储器中的映像。

数据元素的映像方法

bit串。

关系的映像方法

顺序映像:以存储位置的相邻(或者一个固定间隔),表示后继关系。整个存储结构中只包含数据元素本身的信息。

链式映像:存储位置不确定,以附件信息(指针)表示后继关系。

数据类型

是一个值的集合和定义在此集合上一组操作的总称,也可以称为数据结构。

抽象数据类型(ADT)

一个数学模型以及定义在这个数学模型上的一组操作。

特点

数据抽象

强调实体的本质特征、所能完成的功能及与外部用户的接口(外界使用它的方法)。

数据封装

将实体外部特性与内部实现分离,并对外部用户隐藏内部实现细节。

描述方法

(D,S,P),D是数据对象,S是D上的关系集,P是对D的基本操作。

算法和算法的度量

算法

解决某种问题而确定的一个有限长的操作序列。

特征

有穷性:对于任意一组合法的输入值,在执行有穷步骤后,一定能结束。即每个步骤都可以在有限时间内完成。

确定性:对于每种情况下所应执行的操作,在算法中都有确切规定,使算法的执行者或者阅读者都能明确其含义及如何执行。并且在任何条件下,算法都只有一条执行路径。

可行性:算法中所有步骤必须足够基本,都可以通过已实现的基本操作运算有限次实现。

有输入:算法加工的对象,可以在算法执行过程中输入,也可以隐含在算法中。

有输出:是一组与“输入”有确定关系的量值,是算法进行信息加工后的结果,这种确定关系为算法的功能。

算法设计原则

正确性
  • 首先,算法应满足以特定的“规格说明”方式给出的需求。,其次对算法是否“正确”的理解有以下四个层次,通常以c作为衡量算法合格的标准。
  • a.程序中不含有语法错误。
  • b.程序对于几组输入能够得出满足要求的结果。
  • c.对于精心选择的、典型、苛刻且带有刁难性的几组输入数据,能够得出满足要求的结果。
  • d.对于一切合法的输入都能得出满足需求的结果。
可读性

便于理解和调试。

健壮性

当输入数据非法时,算法应作出恰当反映或进行相应处理,而不是产生莫名其妙的结果。并且,处理“出错”的方法不应是中断程序,而是返回一个表示错误或错误性质的结果,以便高层调用处理。

高效率与低存储需求

效率指算法的执行时间,存储需求指执行过程中所需最大存储空间,两者与问题规模有关。

算法效率的衡量和准则

事后统计

缺点:1-必须执行程序。2-其他因素掩盖算法本质。

事前分析估算
时间相关因素

1-算法选用的策略

2-问题的规模

3-编写程序的语言

4-编译的机器代码的质量

5-计算机执行指令的速度

算法执行时间增长率和f(n)增长率相同(n-工作量)。

T(n)=O(f(n)),T(n)为算法的时间渐进复杂度。

算法=控制结构+原操作(固有数据类型的操作)。

算法的执行时间=Σ原操作的执行次数*原操作的执行时间。算法的执行时间与原操作执行次数之和成正比。

算法的空间复杂度,S(n)=O(g(n)),随着问题规模增大,算法运行所需存储的增长率与g(n)相同。

输入数据所占空间。

程序本身所占空间。

辅助变量所占空间。

时间: 2024-08-28 09:54:21

数据结构与算法(一)基础概念的相关文章

数据结构与算法的基本概念

整理一下数据结构和算法的基本概念: 有序数组是按关键字升序或降序排列的,可以使用二分法查找 有序数组的查找速度比无序数组快 有序数组在插入操作中由于所有靠后的数据都需要移动以腾开空间,使用速度较慢 有序数组和无序数组的删除操作都很慢,因为数据项必须向前移动来填补已删除的数据项的洞 有序数组使用于查找频繁的数据库,插入和删除较为频繁的时候,无法高效工作 无序数组插入块,查找慢 有序数组插入慢,查找快 数组创建之后大小就固定了. 数组中每一项占用一个特定的位置,这个位置可以用一个下标号直接访问 数组

数据结构与算法 1 :基本概念,线性表顺序结构,线性表链式结构,单向循环链表

[本文谢绝转载] <大纲> 数据结构: 起源: 基本概念 数据结构指数据对象中数据元素之间的关系  逻辑结构 物理结构 数据的运算 算法概念: 概念 算法和数据结构区别 算法特性 算法效率的度量 大O表示法 时间复杂度案例 空间复杂度 时间换空间案例 1)线性表: 线性表初步认识: 线性表顺序结构案例 线性表顺序结构案例,单文件版 线性表的优缺点 企业级线性表链式存储案例:C语言实现 企业级线性表链式存储案例:C语言实现 单文件版 企业级线性表链式存储案例,我的练习  线性表链式存储优点缺点

数据结构和算法一(基础知识)

一.数据结构与算法基础知识 从广义上讲,数据结构就是指一组数据的存储结构.算法就是操作数据的一组方法. 从狭义上讲,就是指某些著名的数据结构和算法,比如队列.栈.堆.二分查找.动态规划等. 数据结构和算法是相辅相成的,数据结构为算法服务,算法要作用在特定的数据结构之上. 数据结构思维导图 基础数据结构:数组.链表.栈.队列.散列表.二叉树.堆.跳表.图.Trie树 基础算法:地柜.排序.二分查找.搜索.哈希算法.贪心算法.分治算法.回溯算法.动态规划.字符串匹配算法 二.时间复杂度和空间复杂度

数据结构和算法 &ndash; 2.基础查找算法

1.顺序查找 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 数据结构和算法 { class _2 { public readonly static int[] arrayList = new int[] { 312, 564, 1254, 145, 212, 884, 145, 1212, 4

数据结构与算法之--基本概念

数据结构和算法各是指什么?作用是什么? 具体有哪些数据结构,又有哪些算法? 数据结构是数据在计算机内存或者外存中的组织方式,算法就是计算机操作数据结构中数据的方式方法,比如查找.排序. 很少有数据结构是为了节省存储空间的,数据结构和算法的常见目的都集中与提高数据操作的速度上. 常见数据结构有:数组(Arrays),链表(Linked List),栈(Stack),队列(Queue),二叉树(Binary Tree),哈希表(Hash Table),图(Graph)等, 常见算法:查找,排序. 算

数据结构与算法入门---基本概念

有哪些数据结构: 线性表.栈.队列.(字符)串.数组.广义表.树.二叉树.图 重点是:线性表.二叉树 对于每种数据结构都会有其添加.更新.删除.查询等操作的实现 数据结构与算法是不可分的 数据: 数据是描述客观事物的数值.字符以及能输入机器且能被处理的各种符号集合 数据的含义非常的广泛,除了通常的数值数据.字符.字符串是数据之外,声音.图像等一             切可以输入计算机并能被处理的都属数据 例如处理表示人的姓名.身高.体重等的字符.数字是数据.人的照片.指纹.三维模型.语音指令等

数据结构和算法的基本概念

数据结构:数据在计算机存储空间中的安排方式. 算法:软件程序操作这些结构的数据过程. 数据结构类型 1.数组: 优点:插入快,指导下标可以快速存取. 缺点:查找慢,删除慢,大小固定. 2.有序数组: 优点:比无需的数组查找快. 缺点:删除和插入慢,大小固定. 3.栈: 优点:提供后进先出的方式的存取. 缺点:存取其他项很慢 4.队列: 优点:提供先进先出的方式的存取. 缺点:存取其他项很慢. 5.链表: 优点:插入快,删除快. 缺点:查找慢. 6二叉树: 优点:查找,插入,删除都快.(如果树保持

1. 数据结构及算法简介

内容:  主要介绍数据结构及算法的基础知识,一些基本的概念和术语,以及算法的定义.算法的特性.算法的时间复杂度和空间复杂度 注:  该系列下的数据结构及算法的代码主要采用C语言的语法,但是因为要使用到C++的一些特性(引用类型和bool类型),代码均将存为cpp源文件! 1. 数据结构:  数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率.数据结构往往同高效的检索算法和索引技术有关. 

算法入门《数据结构与算法图解》+《我的第一本算法书》+《学习JavaScript数据结构与算法第3版》

最近几年学前端的人会越来越多,再加上前端的范围越来越广,从前端发展为全栈,数据结构和算法的功底要求势必将越来越高. <数据结构与算法图解>电子书及代码是数据结构与算法的入门指南,不局限于某种特定语言,略过复杂的数学公式,用通俗易懂的方式针对编程初学者介绍数据结构与算法的基本概念,培养编程逻辑.主要内容包括:为什么要了解数据结构与算法,大O表示法及其代码优化利用,栈.队列等的合理使用,等等. <算法图解>电子书非常的体贴,看起来也很快,用图来解释算法是非常好的想法,可作为学习数据结构

数据结构与算法系列十(排序算法概述)

1.引子 1.1.为什么要学习数据结构与算法? 有人说,数据结构与算法,计算机网络,与操作系统都一样,脱离日常开发,除了面试这辈子可能都用不到呀! 有人说,我是做业务开发的,只要熟练API,熟练框架,熟练各种中间件,写的代码不也能“飞”起来吗? 于是问题来了:为什么还要学习数据结构与算法呢? #理由一: 面试的时候,千万不要被数据结构与算法拖了后腿 #理由二: 你真的愿意做一辈子CRUD Boy吗 #理由三: 不想写出开源框架,中间件的工程师,不是好厨子 1.2.如何系统化学习数据结构与算法?