摘要: 前言 如果你还不了解快速排序,强烈推荐你可以先移步到我的另外一篇博客 快速排序的引入 — 荷兰国旗问题 算法思路 我们先看看快排 1.0 的算法思路: 我们每次选择最后一个元素作为我们的基准值,然后我们将小于等于基准值的放在基准值左边,大于基准值的放在基准值右边,这时基准值的位置已经排好 (因为小于 阅读全文
posted @ 2021-11-07 21:18 工程小白菜 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 前言 我们在之前的排序算法文章中,介绍了六种基于比较的排序算法:选择排序、冒泡排序、插入排序、归并排序、快速排序和堆排序,现在我们来总结一下每个算法对应的时间复杂度、空间复杂度以及稳定性 排序比较图 1. 稳定性 稳定性的意思就是对于两个值相等的元素,在排完序后,它们的相对位置没有发生改变,这样的算 阅读全文
posted @ 2021-11-07 21:18 工程小白菜 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 前言 学习堆排序前,我们需要先对堆有一定的认识和了解,如果你还不了解堆的话,可以先看看我的另外一篇博客《堆的引入与实现》 算法思路 我们先使用堆的上浮使得数组中的数构成大根堆,再使用堆的下沉,就可以得到当前堆中的最大值,并放到下标为 heapSize 的位置,并把 heapSize - 1 , 继续 阅读全文
posted @ 2021-11-07 21:17 工程小白菜 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 本篇文章介绍了堆的定义以及堆的实现代码,堆是一个很重要的数据结构,并且了解了堆,我们才能更好地明白堆排序 阅读全文
posted @ 2021-11-07 21:13 工程小白菜 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 本文详细介绍了归并排序的两个应用:① 小和问题以及② 逆序对问题 阅读全文
posted @ 2021-10-12 11:26 工程小白菜 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 递归行为以及估算递归行为时间复杂度的 master 公式 阅读全文
posted @ 2021-10-09 22:29 工程小白菜 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 异或算法又可称为无进位加法,这是一种位运算,位运算速度要比算术运算快得多... 阅读全文
posted @ 2021-10-09 22:28 工程小白菜 阅读(439) 评论(0) 推荐(0) 编辑
摘要: 二分法我们很熟悉,它是一种在有序数组中查找特定元素的搜索算法 阅读全文
posted @ 2021-10-09 22:27 工程小白菜 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 使用分而治之的思想——先使局部有序,再让整体变得有序 阅读全文
posted @ 2021-10-09 22:25 工程小白菜 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 每一步将一个待排序的元素插入到已经排好序的有序序列中,直到插完所有元素 阅读全文
posted @ 2021-10-09 22:24 工程小白菜 阅读(56) 评论(0) 推荐(0) 编辑