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

news2024/12/25 9:22:34

前言

技术学得再多,再好还不如将基础学扎实。欠下的迟早是要还的。与其在以后后悔当初不好好学,还不如在大学期间将该学的知识学透。《数据结构与算法》确实不好学,但大学四年下来,还怕啃不下一本书??正是基于这样的目的,我又重新拿起了数据结构,但盲目的自学只会毁了你(效果不大)。老规矩,学习方式还是通过视频+编程+书籍三管齐下,最后通过博客输出实现实时回顾。希望每天能按质按量的学习吧!!!

数据元素的基本概念 

1.数据

数据(data)是信息的载体,

 2.数据元素

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。而构成数据元素的不可分割的最小单位称为数据项。

 

                              

 3.数据结构

数据结构是指相互之间存在一定关系的数据元素的集合。数据元素是讨论数据结构时涉及的最小数据单位,其中的数据项一般不考虑。按照视点的不同,数据元素是讨论数据结构分为逻辑结构存储结构

逻辑结构

根据元素逻辑关系的不同分类:

①集合:数据元素之间就是"属于同一集合"

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

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

④图结构:数据元素之间存在多对多的层次关系。

 存储结构

数据的存储结构又成为物理结构,是数据及逻辑结构在计算机中的表示。

通常又两种存储结构:顺序存储结构和链式存储结构。

顺序存储结构是用一组连续的存储单位依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。链式存储是用一组任意的存储单位存储数据元素,数据元素之间的 逻辑关系用指针表示。

算法的基本概念

1.什么是算法?

算法是对特定问题求解步骤的一种描述,是指令的有限序列。

 

2.什么是“好”算法

好算法满足算法的五个特性:

① 正确性 ②健壮性 ③可理解性 ④高效性

算法的描述方式

①自然语言 ✎优点:容易理解。缺点:冗长。

②流程图 ✎优点:直观易懂。缺点:灵活性差。

③程序设计语言 ✎优点:能由计算机直接执行。缺点:抽象性差。

④伪代码 ✎优点:介意自然语言和设计语言之间,比较适合描述算法。被称为“算法语言”或第一语言。

3.算法分析

如何去度量一个算法的效率呢?通常有两种方法:一种方法是事后统计法,先将算法实现,然后输入适当的数据运行,测算时间和空间开销。通常我们采用事前分析估计的方法——渐进复杂度

4.算法的时间复杂度

为了客观反映一个算法的执行时间,可以用算法中基本语句的执行次数来度量算法的工作量。基本语句是执行次数与整个算法的执行次数成正比的语句,基本语句对算法的运行时间贡献最大,是算法中最重要的操作。

算法分析举例

++x;

 ++x是基本语句,执行次数为1,时间复杂度为o(1),称为常量阶。

for(i=1;i<=n;i++)
{
   x+=5;

}

x+=5是基本语句,执行次数为n,时间复杂度为O(n),称为线性阶。

for(j=1;j<=n;j++)
for(i=1;i<=n;i++)
{

  ++x;

}

++x是基本语句,执行次数为n^{2},时间复杂读为O(n^{2}),称为平方阶。

 for(i=1;i<=n;++i)

 for(j=1;j<=i-1;++j)
      ++x;


解:++x是基本语句,执行次数为:,所以时间复杂度为O(n2)。分析的策略是从内部(或最深层部分)向外展开。
 

for(i=1;i<=n;i=2*i)

         ++x;


解:++x是基本语句,设其执行次数为T(n),则有2T(n)≤n,即T(n)≤log2n,所以时间复杂度为O(log2n),称为对数阶

 

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

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

相关文章

自动驾驶技术

高精地图&#xff08;HD Maps&#xff09;&#xff1a;支持其他模块 定位&#xff08;Localization&#xff09;&#xff1a;讨论汽车如何确定他所处的位置&#xff0c;汽车利用激光和雷达数据&#xff0c;将这些传感器感知内容与高分辨地图进行对比&#xff0c;这种对比使得汽…

Scanpy plot umap的color编码, Scanpy 的color map 如何设置?

Scanpy plot umap的color编码&#xff0c; Scanpy 的color map 如何设置&#xff1f;关键词palette&#xff08;调色板&#xff09; https://scanpy.readthedocs.io/en/stable/generated/scanpy.pl.umap.html?highlightpl.umap#scanpy.pl.umap https://scanpy.discourse.grou…

JavaScript -- 08. 数组介绍

文章目录数组1 数组简介1.1 创数组1.2 向数组添加元素1.3 读取数组中的元素1.4 获取数组长度2 数组的遍历2.1 使用for循环遍历2.2 for-of遍历3 数组的方法3.1 Array.isArray()3.2 at()3.3 concat()3.4 indexOf()3.5 lastIndexOf()3.6 join()3.7 slice()3.8 push()3.9 pop()3.10…

Android Jetpack-Compose相关

Android Jetpack-Compose相关 一、什么是Compose&#xff1f; Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;可以帮助您简化并加快 Android 界面开发&#xff0c;打造生动而精彩的应用。它可让您更快…

Go学习之路-环境搭建

默认运行设备系统&#xff1a;MacOS 安装 安装包下载地址&#xff08;下面3个都可以&#xff09;&#xff1a; https://studygolang.com/dl https://golang.google.cn/dl/ https://golang.org/dl/ 我这里选择 pkg包、一键安装、默认的安装路径 /usr/local/go 环境 设置go语言…

[附源码]计算机毕业设计springboot在线图书销售系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

mmap 创建共享内存映射

所谓内存映射指的是 让一个磁盘文件与内存中的一个缓冲区相映射&#xff0c;进程访问这块内存时&#xff0c;就等同于访问文件对应映射部分&#xff0c;不必再调用 read / write 。 我们可以使用mmap函数来建立内存和文件某一部分的映射关系。 目录 一、共享内存映射的创建 /…

代码审计-3 文件包含漏洞

文章目录代码审计-文件包含漏洞文件包含漏洞种类当检测到目标存在文件包含漏洞时可以怎么利用文件包含中php可使用的协议PHPCMS V9.6.3后台文件包含漏洞后台路由分析漏洞寻找代码审计-文件包含漏洞 文件包含漏洞种类 当检测到目标存在文件包含漏洞时可以怎么利用 文件包含中php…

npm run dev和npm run serve

npm run dev和npm run serve目录概述需求&#xff1a;设计思路实现思路分析1.npm install命令2.package.json3.npm run serve参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make …

redis基础4——RDB持久化、AOF持久化全面深入解读

文章目录一、redis持久化机制1.1 持久化的背景1.2 两种持久化概念1.2.1 快照方式&#xff08;RDB&#xff09;1.2.2 文件追加方式&#xff08;AOF&#xff09;1.3 rdb持久化&#xff08;Redis Database&#xff09;1.3.1 快照原理1.3.2 触发机制1.3.2.1 手动触发1.3.2.1.1 save…

最常用的python开发工具

有哪些值得推荐的 Python 开发工具 推荐5个非常适合Python小白的开发工具&#xff1a;1、Python TutorPython Tutor是由Philip Guo开发的一个免费教育工具&#xff0c;可帮助开发者攻克编程学习中的基础障碍&#xff0c;理解每一行源代码在程序执行时在计算机中的过程。 通过…

CentOS8克隆虚拟机修改IP,错误:未知的连接 “ens160“

关于CentOS8该如何克隆与修改IP&#xff0c;并设置成静态IP的方法&#xff0c;可以参考我的另一篇文章&#xff0c;我也是一直这么做的。 CentOS8拷贝虚拟机、修改ip、主机 但是最近我再使用我的这篇文章克隆虚拟机的时候&#xff0c;竟然报错了&#xff0c;本来想删除掉克隆…

2023年天津农学院专升本专业课报名、确认缴费及准考证打印流程

天津农学院2023年高职升本科专业课考试 报名、确认缴费及准考证打印操作流程 一、报名操作流程 1. 阅读报名注意事项 请考生于2022年12月5日9点—12月10日12点登录报名系统 http://gzsb.tjau.edu.cn&#xff0c;请认真阅读报名注意事项。2.报名登录 点击“报名”菜单后进入报名…

LeetCode 374. 猜数字大小

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓LeetCode 374. 猜数字大小&#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f332;&#x1f434;&#x1f434; 一、题目名称 LeetCode 374.…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校辅导员工作管理系统82aub

对于即将毕业或者即将做课设的同学而言&#xff0c;由于经验的欠缺&#xff0c;面临的第一个难题就是选题&#xff0c;确定好题目之后便是开题报告&#xff0c;如果选题首先看自己学习那些技术&#xff0c;不同技术适合做不同的产品&#xff0c;比如自己会些简单的Java语言&…

【圣诞文】用python带你体验多重花样圣诞树

前言 大家早好、午好、晚好吖 ❤ ~ 在圣诞要来临的前夕&#xff0c;我们来出一起圣诞特辑吧 &#xff08;虽说可能有一丢丢早&#xff0c;但是等要来了在准备就来不及了呀~&#xff09; 圣诞节要素 1、圣诞袜&#xff0c;最早以前是一对红色的大袜子&#xff0c;大小不拘。 …

Spring异步任务async介绍与案例实战

关于spring异步任务 简单地说&#xff0c;用Async注释bean的方法将使其在单独的线程中执行。换句话说&#xff0c;调用者不会等待被调用方法的完成。利用spring提供的注解即可简单轻松的实现异步任务处理。 默认线程池问题 Spring 异步任务默认使用 Spring 内部线程池 Simpl…

网页自动点赞

进入网页版QQ空间 ,在开发者模式下创建脚本 var x5,y10;function autoClick(){yy5;var zandocument.getElementsByClassName(item qz_like_btn_v3);for(var i0;i<zan.length;i){if(zan[i].attributes[6].valuelike){zan[i].firstChild.click();}};window.scrollBy(x,y);}win…

LC118原厂直流驱动芯片 SOP-8

直流驱动芯片 LC118 SOP-8 电机驱动电路 马达驱动IC 马达驱动IC LC118的描述&#xff1a; LC118 是为专门为低电压下工作的系统而设计的单通道玩具直流电机驱动集成电路。它具有 H桥驱动器, 采用导通电阻非常小的P-MOS和N-MOS功率晶体管作为开关管&#xff0c;可在瞬间提供大电…

CMake中target_link_libraries的使用

CMake中的target_link_libraries命令用于指定链接给定目标和/或其依赖项时要使用的库或标志。来自链接库目标的使用要求将被传播(propagated)。目标依赖项的使用要求会影响其自身源代码的编译。其格式如下&#xff1a; target_link_libraries(<target> ... <item>…