数据结构与算法:概述

这篇具有很好参考价值的文章主要介绍了数据结构与算法:概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

算法

评价标准

时间的复杂度

概念

推导原则

举例

空间的复杂度

定义

情形

运用场景

数据结构

组成方式


算法

在数学领域,算法是解决某一类问题的公式和思想;

计算机科学领域,是指一系列程序指令,用于解决特定的运算和逻辑问题;

评价标准

衡量算法好坏的重要标准是:时间复杂度和空间复杂度;

代码运行时间的长短和占用内存空间的大小,是衡量程序好坏的重要因素。

时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间

时间的复杂度

概念

        计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间

推导原则

        如果运行时间是常数量级,则用常数1表示

        只保留时间函数中的最高阶项

        如果最高阶项存在,则省去最高阶项前面的系数

举例

例1:给小灰1个长度为10cm的面包,小灰每3分钟吃掉1cm,那么吃掉整个面 包需要多久?

        答案是:3×10即30分钟。

        如果面包的长度是n cm呢?

        此时吃掉整个面包,需要3乘以n即3n分钟。

        如果用一个函数来表达吃掉整个面包所需要的时间,可以记作T(n) = 3n,n为面 包的长度

例2:给小灰1个长度为16cm的面包,小灰每5分钟吃掉面包剩余长度的一半, 即第5分钟吃掉8cm,第10分钟吃掉4cm,第15分钟吃掉2cm……那么小灰把面包吃得 只剩1cm,需要多久呢?

        把面包吃得只剩下1cm,需要5×log16即20分钟。

        如果面包的长度是n cm呢?

        此时,需要5乘以logn即5logn分钟,记作T(n) = 5logn。                

设T(n)为程序基本操作执行次数的函数,n为输入规模,刚才的2个场景分别对应了程序中最常见的2种执行方式:

例1中:T(n) = 3n,执行次数是线性的;最高阶项为3n,省去系数3,则转化的时间复杂度为:T(n)=O(n)。

数据结构与算法:概述,数据结构与算法,数据结构,算法,java

例2中:T(n) = 5logn,执行次数是用对数计算的;最高阶项为5logn,省去系数5,则转化的时间复杂度为:T(n) =O(logn)。

数据结构与算法:概述,数据结构与算法,数据结构,算法,java

渐进时间复杂度用大写O来表示,所以也被称为大O表示法

空间的复杂度

        在运行一段程序时,我们不仅要执行各种运算指令,同时也会根据需要,存储 一些临时的中间数据,以便后续指令可以更方便地继续执行。

定义

        是对一个算法在运行过程中临时占用存储空间大小的量度;空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。

情形

1.常量空间:当算法的存储空间大小固定,和输入规模没有直接的关系时,空间复杂度记 作O(1)。

2.线性空间:当算法分配的空间是一个线性的集合(如数组),并且集合大小和输入规模n成 正比时,空间复杂度记作O(n)。

3.二维空间:当算法分配的空间是一个二维数组集合,并且集合的长度和宽度都与输入规模n 成正比时,空间复杂度记作O(n 2 )。

4.递归空间:递归是一个比较特殊的场景。虽然递归代码中并没有显式地声明变量或集合, 但是计算机在执行程序时,会专门分配一块内存,用来存储“方法调用栈”。

运用场景

        1.运算

        2.查找

        3.排序

        4.最优决策

数据结构

        是数据的组织、管理和存储格式,其使用目的是为了高效的访问和修改数据

组成方式

1.线性结构:最简单的数据结构,其中包括了数组、链表、以及衍生出来的栈、队列、哈希表

数据结构与算法:概述,数据结构与算法,数据结构,算法,java

2.树:相对复杂的数据结构,其中有代表性的是二叉树,由它又衍生出二叉堆之类的数据结构

数据结构与算法:概述,数据结构与算法,数据结构,算法,java

3.图:是更为复杂的数据结构,在图中会呈现出多对多的关联关系

数据结构与算法:概述,数据结构与算法,数据结构,算法,java

4.其他数据结构:由基本数据结构变形而来,用于解决某些特定问题,如跳表、哈希链表、位图 等

注意:

        有了数据结构算法才能尽情地发挥;在解决问题时,不同的算法会选用不同的数据结构文章来源地址https://www.toymoban.com/news/detail-704457.html

到了这里,关于数据结构与算法:概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)

    目录 算法概述 图示 伪代码 选主元 子集划分 小规模数据的处理 算法实现 快速排序和归并排序有一些相似,都是用到了分而治之的思想:   通过初步的认识,我们能够知道快速排序算法最好的情况应该是: 每次都正好中分 ,即每次选主元都为元素的中位数的位置。 最好情

    2024年02月15日
    浏览(31)
  • 数据结构与算法基础(王卓)(28):排序概述(分类)、直接插入排序思路

    目录 排序分类:(本章目录) 按数据存储介质:(学习内容) 内部排序: 外部排序: 按比较器个数:(学习内容) 串行排序: 并行排序: 按主要操作:(学习内容、里面的排序都会重点学) 比较排序: 基数排序: 按辅助空间: 原地排序: 非原地排序: 按稳定性: 稳

    2023年04月26日
    浏览(32)
  • 数据结构—串的概述与算法【求子串、比较、删除、插入、扩容、模式匹配】

    💂 个人网站:  路遥叶子 🤟 版权: 本文由【路遥叶子】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、 欢迎 关注、点赞、收藏 (一键三连)和订阅专栏哦 💅  想寻找共同成长的小伙伴,请点击【 Java全栈开发社区 】

    2023年04月16日
    浏览(30)
  • java入门,程序=数据结构+算法

    一、前言 在学习java的时候,我印象最深的一句话是:程序=数据结构+算法,对于写java程序来说,这就是java的入门。 二、java基本数据结构与算法 1、数据类型 java中的数据类型8种基本数据类型: 整型 byte 、short 、int 、long 浮点型 float 、 double 字符型 char 布尔型 boolean 还有包

    2024年02月05日
    浏览(47)
  • java数据结构与算法:栈

    代码: 测试: 链表头为堆栈顶 代码: 测试:

    2024年01月21日
    浏览(37)
  • Java 数据结构与算法-树

    树的基础知识 树是算法面试经常遇到的数据结构之一,在实际工作中也有可能经常用到…… 应聘者在准备算法面试时最需要重视的是二叉树…… 二叉树是一种典型的具有递归性质的数据结构。二叉树的根节点可能有子节点,子节点又是对应子树的根节点,它可能也有自己的

    2024年02月08日
    浏览(38)
  • Java数据结构与算法:查找算法之二分查找

    大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,欢迎回到本专栏。在这个冰冷的季节里,我们将一同探讨Java中一种高效的查找算法——二分查找。让我们点燃知识的火花,一同解锁这个查找奇迹的秘密! 二分查找简介 二分查找,也称为折半查找,

    2024年01月21日
    浏览(36)
  • 【数据结构】用Java实现七大排序算法

    目录 🌷1. 排序的概念及引用 1.1 排序的概念 1.2 衡量指标 1.2 十个排序算法  1.3 十个排序性能对比 🌷2. 冒泡排序 2.1 算法描述 2.2 动图 ⭐️代码优化 🌷3. 选择排序 3.1 算法描述 3.2 动图  3.3 代码 🌷4. 插入排序 4.1 算法描述 4.2 动图  4.3 代码 🌷5 希尔排序 5.1 描述 5.2 动图  

    2023年04月23日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包