【社区图书馆】读《大话数据结构溢彩加强版》

news2024/9/22 3:38:45

目录

书中简介:

选读原因

本书内容有哪些:

学会了什么:

书中简介:

《大话数据结构【溢彩加强版】》以一个计算机教师的教学过程为场景,讲解数据结构和相关算法的知识。全书以趣味方式来叙述,大量引用各种各样的生活知识来类比,并充分运用全彩色图形语言来解读抽象内容,对数据结构所涉及的一些经典算法做出逐行分析、多算法比较。与同类图书相比,《大话数据结构【溢彩加强版】》内容有趣易读,算法讲解细致深入,是一本非常适合自学的读物。 对于学习数据结构来说,难点之一是对相关算法的理解。《大话数据结构【溢彩加强版】》创新性地采用全彩印刷,图表、流程、代码等内容结合色彩来重新进行约定和归纳,使得对一些难以理解的知识点的解析更加清晰顺畅,极大提升了阅读体验。 《大话数据结构【溢彩加强版】》主要内容包含:数据结构介绍、算法推导大O阶的方法;顺序结构与链式结构差异、栈与队列的应用;串的朴素模式匹配、KMP模式匹配算法;二叉树前中后序遍历、哈夫曼树及应用;图的深度、广度遍历;最小生成树两种算法、最短路径两种算法;拓扑排序与关键路径算法;折半查找、插值查找、斐波那契查找等静态查找;稠密索引、分块索引、倒排索引等索引技术;二叉排序树、平衡二叉树等动态查找;B树、B+树技术,散列表技术;冒泡、选择、插入等简单排序;希尔、堆、归并、快速等改进排序。

选读原因

选读原因:都说编程==算法+数据结构。在学习过程或者实践过程中一般大多探讨的注重的几乎都是关于算法如何优化,实现优化。今天我来说说数据结构的问题:

常用的存储结构有顺序存储、链式存储、索引存储和哈希存储等。
借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系;非顺序存储的特点是:借助指示元素存储地址的指针表示数据元素之间的逻辑关系。

数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。简而言之,数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合。“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储结构。

本书内容有哪些:

数据结构介绍、算法推导大O阶的方法;顺序结构与链式结构差异、栈与队列的应用;串的朴素模式匹配、KMP模式匹配算法;二叉树前中后序遍历、哈夫曼树及应用;图的深度、广度遍历;*小生成树两种算法、*短路径两种算法;拓扑排序与关键路径算法;折半查找、插值查找、斐波那契查找等静态查找;稠密索引、分块索引、倒排索引等索引技术;二叉排序树、平衡二叉树等动态查找;B树、B 树技术,散列表技术;冒泡、选择、插入等简单排序;希尔、堆、归并、快速等改进排序。

通过本书学会了什么:

时间复杂度:

 冒泡排序

for (i=0; i<len-1; i++) 
        for (j=0; j<len-1-i; j++) {
            if (arr[j] > arr[j+1]){ 
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }


选择排序:

 for(i = 0; i < n-1; i ++) {
        for(j = i+1; j < n; j ++) {
             if(a[i] > a[j]) {
                    k = a[i];
                    a[i] = a[j];
                    a[j] = k;
             }
         }
    }

二叉树的遍历,前序、中序和后序

  • 前序遍历:先输出父节点,再遍历左子树,然后遍历右子树
    中序遍历:先遍历左子树,再输出父节点,然后遍历右子树
    后续遍历:先遍历左子树,再遍历右子树,最后输出父节点

    例如

  •   /*   a
        b     c
      d   e  */
    /*二叉树三部分
    1.根节点
    2.左子树
    3.右子树
    */
    /*分治:子问题
    前序 :根 左子树 右子树
    A B D NULL NULL E NULL NULL C NULL NULL
    中序:左、根、右
    NULL D NULL B E NULL A NULL C   NULL
    
    
    */
         


         

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

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

相关文章

无公网IP,外网远程连接MySQL数据库

哈喽~大家好&#xff0c;这篇来看看无公网IP&#xff0c;外网远程连接MySQL数据库。 文章目录 前言1. 检查mysql安装状态2. 安装配置cpolar内网穿透3. 创建tcp隧道&#xff0c;映射3306端口4. 公网远程连接4.1 图形化界面4.2 使用命令行远程连接 5. 配置固定tcp端口地址5.1 保留…

「计算机控制系统」6. 直接设计法

特殊类型系统的最小拍无差设计 一般系统的最小拍无差设计 最小拍控制器的工程化改进 Dahlin算法 文章目录 特殊类型系统的最小拍无差设计理论分析典型输入函数的最小拍无差系统 一般系统的最小拍无差设计有波纹最小拍无差设计无波纹最小拍无差设计 最小拍控制器的工程化改进针对…

操作HDFS文件系统常用命令(启停、创建、查看、上传、下载、追加、删除.etc)

文章目录 1 一键启停2 单进程启停3 创建文件夹4 查看指定目录下内容5 上传文件到HDFS指定目录下 linux->HDFS6 下载 HDFS ->Linux7 追加数据 linux->HDFS8 查看HDFS文件内容9 HDFS 数据删除10 网页端图形化界面11总结 跟linux命令大差不差 1 一键启停 HadoopHDFS组件…

共享锁中:Semaphore 、CyclicBarrier 、CountDownLatch的区别是什么?

目录 下面是一个使用Semaphore实现共享锁的例子&#xff1a; 下面是一个使用CountDownLatch实现等待一组操作完成的例子&#xff1a; 下面是一个使用CyclicBarrier实现等待一组线程达到某个状态后再同时执行的例子&#xff1a; 结论1&#xff1a; 结论2&#xff1a; 下面是…

JavaSE基础(一)—— Java环境搭建、IDEA、Java语言

【JavaSE基础回顾笔记】 JavaSE基础&#xff08;一&#xff09;—— Java环境搭建、IDEA、Java语言 JavaSE基础&#xff08;二&#xff09;—— Java语法、运算符、随机数 JavaSE基础&#xff08;三&#xff09;—— 分支、循环、控制关键字 JavaSE基础&#xff08;四&…

Opencv+Python笔记(六)图像的平滑处理

图像在获取、传输的过程中&#xff0c;可能会受到干扰的影响&#xff0c;会产生噪声&#xff0c;噪声是一种出错了的信号&#xff0c;噪声会造成图像粗糙。 图像平滑处理的目的是去除图像中的噪声和不必要的细节&#xff0c;使图像更加清晰和易于分析。常用的平滑滤波器包括高斯…

无感FOC

前言 一年多前就画好了FOC的板子&#xff0c;后面因为各种原因耽搁了&#xff0c;最近又重新捡起来&#xff0c;准备写一下程序&#xff0c;首先我们要做一下FOC的理论分析。 左右手定则 左手定则用于判断导线在磁场中受力的方向&#xff1a; 磁感线从左手手心流入&#xff0…

前++与后++的区别?反汇编底层刨析

目录 1.只&#xff0c;不赋值 2.和其他运算符的结合 1.后置&#xff08;i&#xff09; 2.前&#xff08;i&#xff09; 总结 1.只&#xff0c;不赋值 前置和后置无区别&#xff0c;效果一致&#xff0c;i -> ii1 反汇编语言内&#xff0c;对a和b的操作进行观察&#…

彻底卸载Anaconda和PyCharm详细教程

目录 一、卸载Anaconda 二、 卸载PyCharm 一、卸载Anaconda 1、在开始处打开Anaconda Prompt 2、打开后&#xff0c;输入conda install tqdm -f命令并按回车键 conda install tqdm -f 3、之后页面会出现一个WANNING&#xff0c;这个我们不用在意&#xff0c;然后会出现一个…

GitHub新手用法详解【适合新手入门-建议收藏!!!】

目录 什么是Github&#xff0c;为什么使用它&#xff1f; 一、GitHub账号的注册与登录 二、 gitbash安装详解 1.git bash的下载与安装 2.git常用命令 3. Git 和 GitHub 的绑定 1. 获取SSH keys 2.绑定ssh密钥 三、通过Git将代码提交到GitHub 1.克隆仓库 2.测试提交代码…

ClickHouse同步MySQL数据

目录 1 概述1.1 特点1.2 使用细则 2 案例实操2.1 MySQL 开启 binlog 和 GTID 模式2.2 准备 MySQL 表和数据2.3 开启 ClickHouse 物化引擎2.4 创建复制管道2.5 修改数据2.6 删除数据2.7 删除表 1 概述 MySQL 的用户群体很大&#xff0c;为了能够增强数据的实时性&#xff0c;很多…

通过response.body()返回的json报文,直接生成对应结构体,实现数据绑定

作者&#xff1a;非妃是公主 专栏&#xff1a;《Golang》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录 序一、解决办法二、相关测试代码1. json body…

Origin选取一定间隔的数据点并作图

有些时候我们发现用origin绘制的图数据点太密&#xff0c;抖动太剧烈&#xff1a; 所以我们最好是隔几个点采样一次&#xff0c;方法如下。 假如我们一共有五列数据&#xff0c;我们再扩充六列&#xff08;其中一列是放隔点采样的横坐标&#xff09;&#xff1a; 然后选中扩充…

Java企业级开发学习笔记(2.4)利用MyBatis实现条件查询

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【http://t.csdn.cn/AZM1g】 文章目录 一、创建学生映射器配置文件二、配置学生映射文件三、创建学生映射器接口四、测试学生映射器接口任务1. 查询女生记录任务2. 查询19岁的女生任务3. 查询姓吴的19岁女生任务4. 查…

css预处理器:less

1.css常见单位 绝对单位 只需要掌握px,国外in用得更多 相对单位 em em相对于自身的font-size,如果自身未定义,则相对于继承的父元素font-size rem rem可以做移动端的适配,依然很重要,如淘宝m站在使用;但是趋势是rem转vw rem是相对于html的font-size,html默认字体大小为1…

ROS学习第二十五节——rqt工具箱

1.安装 一般只要你安装的是desktop-full版本就会自带工具箱 如果需要安装可以以如下方式安装 $ sudo apt-get install ros-noetic-rqt $ sudo apt-get install ros-noetic-rqt-common-plugins2.启动 rqt的启动方式有两种: 方式1:rqt 方式2:rosrun rqt_gui rqt_gui 3.基本使…

知识图谱实战应用5-基于知识图谱的创建语义搜索功能

大家好&#xff0c;我是微学AI&#xff0c;今天给大家讲一下知识图谱实战应用5-基于知识图谱的创建语义搜索功能。基于知识图谱的语义搜索功能是一种能够理解用户意图、并根据语义关系在知识图谱中进行查询的搜索方式。相比于传统的文本搜索&#xff0c;它可以更准确地回答用户…

Ubuntu 23.04 正式发布

Ubuntu 23.04 “Lunar Lobster” 是 Ubuntu 操作系统的最新短期支持版本&#xff0c;该版本将获得 9 个月的支持&#xff0c;直到 2024 年 1 月。如果你需要长期支持&#xff0c;建议使用 Ubuntu 22.04 LTS 代替。 Linux 内核 Ubuntu 23.04 采用了新的 Linux 6.2 内核。 值得注…

PySide6/PyQT多线程的使用

前言 上一篇文章介绍了在PySide6中使用多线程去解决PySide6/PyQT的界面卡死问题&#xff0c;这次来具体介绍下多线程在使用上的一些细节。 本文尝试对以下两个问题进行解决&#xff1a; 对 PySide6/PyQT 多线程的使用不熟悉&#xff1b;在 PySide6/PyQT 的应用程序里有耗时任…

prompt的演变

随着功能的增加&#xff0c;提示工程的复杂性将不可避免地增加。在这里&#xff0c;我解释了如何将复杂性引入到提示工程的过程中。 静态prompt 如今&#xff0c;试验prompt和提示工程已司空见惯。通过创建和运行提示的过程&#xff0c;用户可以体验 LLM 的生成能力。 文本生…