随笔分类 - 和左老师学算法
在b站和左老师一起学习算法~~~真香
摘要:前言 如果你还不了解快速排序,强烈推荐你可以先移步到我的另外一篇博客 快速排序的引入 — 荷兰国旗问题 算法思路 我们先看看快排 1.0 的算法思路: 我们每次选择最后一个元素作为我们的基准值,然后我们将小于等于基准值的放在基准值左边,大于基准值的放在基准值右边,这时基准值的位置已经排好 (因为小于
阅读全文
摘要:前言 我们在之前的排序算法文章中,介绍了六种基于比较的排序算法:选择排序、冒泡排序、插入排序、归并排序、快速排序和堆排序,现在我们来总结一下每个算法对应的时间复杂度、空间复杂度以及稳定性 排序比较图 1. 稳定性 稳定性的意思就是对于两个值相等的元素,在排完序后,它们的相对位置没有发生改变,这样的算
阅读全文
摘要:前言 学习堆排序前,我们需要先对堆有一定的认识和了解,如果你还不了解堆的话,可以先看看我的另外一篇博客《堆的引入与实现》 算法思路 我们先使用堆的上浮使得数组中的数构成大根堆,再使用堆的下沉,就可以得到当前堆中的最大值,并放到下标为 heapSize 的位置,并把 heapSize - 1 , 继续
阅读全文
摘要:本篇文章介绍了堆的定义以及堆的实现代码,堆是一个很重要的数据结构,并且了解了堆,我们才能更好地明白堆排序
阅读全文
摘要:本文详细介绍了归并排序的两个应用:① 小和问题以及② 逆序对问题
阅读全文
摘要:递归行为以及估算递归行为时间复杂度的 master 公式
阅读全文
摘要:二分法我们很熟悉,它是一种在有序数组中查找特定元素的搜索算法
阅读全文
摘要:每一步将一个待排序的元素插入到已经排好序的有序序列中,直到插完所有元素
阅读全文
摘要:依次比较相邻的元素,如果前一个元素比后一个元素大,则交换位置
阅读全文
摘要:首先在数组中找到最小的元素,将其放在数组的第一位,再从数组中剩下的元素(第2位到n-1位)找到最小的元素,放到数组的第二位...
阅读全文

浙公网安备 33010602011771号