摘要: #前言 在本篇文章中,我将介绍 Dijkstra 算法解决 单源最短路径问题 ,同时还包含了具体路径的还原。以下是我自己的全部学习过程与思考,参考书籍为 《数据结构》(C++语言版) 邓俊辉 编著 。 (本文作者: Amαdeus,未经允许不得转载哦。) #最短路径问题 ##最短路径概述 在当今这个 阅读全文
posted @ 2022-11-27 00:04 Amαdeus 阅读(232) 评论(0) 推荐(3) 编辑
摘要: #前言 本篇文章我将介绍 期望为线性时间 的选择算法和 最坏情况为线性时间 的选择算法,即分别为 平均情况下时间复杂度为O(n) 和 最坏情况下时间复杂度为O(n) 的线性时间选择。以下包含了我自己的全部思考和学习过程,参考书籍为 算法导论(第三版)。😊 (本文作者: Amαdeus,未经允许不得 阅读全文
posted @ 2022-11-24 14:36 Amαdeus 阅读(197) 评论(0) 推荐(2) 编辑
摘要: #前言 在这篇文章中,我将介绍动态规划求解 最大子段和(即最大子数组累加和问题) 的两种写法思路及其还原最优解,后面还包含了一点小小的优化。😊 (本文作者: Amαdeus,未经允许不得转载哦。) #最大子段和解析 ##最大子段和问题描述 给定一个长度为 len 的序列: a[0], a[1], 阅读全文
posted @ 2022-11-22 15:49 Amαdeus 阅读(252) 评论(0) 推荐(2) 编辑
摘要: #快速排序解释 快速排序 Quick Sort 与归并排序一样,也是典型的分治法的应用。 (如果有对 归并排序还不了解的童鞋,可以看看这里哟~ 归并排序)❤❤❤ (本文作者: Amαdeus,未经允许不得转载哦。) ###快速排序的分治模式 1、选取基准值,获取划分位置。将原数组 a[l, r] 划 阅读全文
posted @ 2022-11-20 21:23 Amαdeus 阅读(258) 评论(0) 推荐(3) 编辑
摘要: #前言 在本篇文章中,我将介绍 Dijkstra 算法解决 单源最短路径问题 ,同时还包含了具体路径的还原。以下是我自己的全部学习过程与思考,参考书籍为 《数据结构》(C++语言版) 邓俊辉 编著 。 (本文作者: Amαdeus,未经允许不得转载哦。) #最短路径问题 ##最短路径概述 在当今这个 阅读全文
posted @ 2022-11-27 00:04 Amαdeus 阅读(232) 评论(0) 推荐(3) 编辑
摘要: #前言 本篇文章我将介绍 期望为线性时间 的选择算法和 最坏情况为线性时间 的选择算法,即分别为 平均情况下时间复杂度为O(n) 和 最坏情况下时间复杂度为O(n) 的线性时间选择。以下包含了我自己的全部思考和学习过程,参考书籍为 算法导论(第三版)。😊 (本文作者: Amαdeus,未经允许不得 阅读全文
posted @ 2022-11-24 14:36 Amαdeus 阅读(197) 评论(0) 推荐(2) 编辑
摘要: #前言 在这篇文章中,我将介绍动态规划求解 最大子段和(即最大子数组累加和问题) 的两种写法思路及其还原最优解,后面还包含了一点小小的优化。😊 (本文作者: Amαdeus,未经允许不得转载哦。) #最大子段和解析 ##最大子段和问题描述 给定一个长度为 len 的序列: a[0], a[1], 阅读全文
posted @ 2022-11-22 15:49 Amαdeus 阅读(252) 评论(0) 推荐(2) 编辑
摘要: #基数排序解释 ##基数排序 基数排序 Radix Sort 是一种非基于比较的排序算法。在基数排序中,和计数排序、桶排序的思想类似,我们要再次用到桶这个东西。😉 *如果还有对计数排序、桶排序不了解的童鞋,可以看看这里哟~ ❤❤❤ 计数排序 桶排序 ❤❤❤ ##基数排序思想 其基本思想是从数据的低 阅读全文
posted @ 2022-11-21 12:38 Amαdeus 阅读(30) 评论(0) 推荐(1) 编辑
摘要: #桶排序解释 ##桶排序思想 桶排序 是一种空间换取时间的排序方式,是非基于比较的。 桶排序 顾名思义,就是构建多个映射数据的桶,将数据放入桶内,对每个桶内元素进行单独排序。假设我们有 n 个待排序的元素,我们定义了 k 个桶,之后将这 n 个元素分配到 k 个桶中。我们一般每个桶的数据范围大小是 阅读全文
posted @ 2022-11-21 01:38 Amαdeus 阅读(16) 评论(0) 推荐(0) 编辑
摘要: #计数排序解释 ##计数排序思想 计数排序 的思想十分简单,就是统计每个数字出现的次数。它是一种非基于比较的排序算法,其是通过额外的空间换取时间的方式,来实现更加高效的排序。😇😇😇 ##计数排序步骤 1、假设我们有一个长度为 n 的待排序序列,其所有元素组成的集合为 S,集合的数据范围为 0 阅读全文
posted @ 2022-11-21 00:35 Amαdeus 阅读(10) 评论(0) 推荐(0) 编辑
摘要: #快速排序解释 快速排序 Quick Sort 与归并排序一样,也是典型的分治法的应用。 (如果有对 归并排序还不了解的童鞋,可以看看这里哟~ 归并排序)❤❤❤ (本文作者: Amαdeus,未经允许不得转载哦。) ###快速排序的分治模式 1、选取基准值,获取划分位置。将原数组 a[l, r] 划 阅读全文
posted @ 2022-11-20 21:23 Amαdeus 阅读(258) 评论(0) 推荐(3) 编辑
摘要: #归并排序解释 归并排序 Merge Sort 是典型的分治法的应用,其算法步骤完全遵循分治模式。 ##分治法思想 分治法 思想: 将原问题分解为几个规模较小但又保持原问题性质的子问题,递归求解这些子问题,然后再合并这些子问题的解,最终得到原问题的解。 ##分治模式每层递归步骤 1、分解原问题为若干 阅读全文
posted @ 2022-11-20 14:41 Amαdeus 阅读(15) 评论(0) 推荐(0) 编辑
摘要: #堆排序解释 ##什么是堆 堆 heap 是一种近似完全二叉树的数据结构,其满足一下两个性质 1. 堆中某个结点的值总是不大于(或不小于)其父结点的值; 2. 堆总是一棵完全二叉树 将根结点最大的堆叫做大根堆(大项堆),根结点最小的堆叫做小根堆(小项堆)。 ##堆排序原理 我们一般用大根堆对数组进行 阅读全文
posted @ 2022-11-20 01:19 Amαdeus 阅读(14) 评论(0) 推荐(0) 编辑
摘要: #树形选择排序解释 树形选择排序 又称为锦标赛排序,其实理解起来很简单。🧐 数组的 n 个元素就好像在进行锦标赛一样,每一轮小比赛每两个一组决出胜负(比较谁更小)。 再将每一轮的胜者每两个一组进行小比赛,直到最后决出唯一的胜者(即当前最小元素)。很明显,锦标赛构成图的形状就是一个满二叉树捏。🤔 阅读全文
posted @ 2022-11-19 23:24 Amαdeus 阅读(11) 评论(0) 推荐(0) 编辑