排序算法
文章平均质量分 90
小白又菜
大四应届毕业生,软工专业。C/C++
展开
-
[ 数据结构 -- 手撕排序算法第一篇 ] 插入排序
手撕排序算法系列之:插入排序。从本篇文章开始,我会介绍并分析常见的几种排序,大致包括插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等。本篇主要来手撕插入排序算法:目录1.常见的排序算法2.插入排序的实现2.1基本思想2.2直接插入排序:2.2.1单趟排序的基本思想:2.2.2单趟排序代码实现:3.插入排序实现代码4.插入排序测试5.直接插入排序特性总结排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减..原创 2022-04-17 11:19:31 · 2000 阅读 · 21 评论 -
[ 数据结构 -- 手撕排序算法第二篇 ] 冒泡排序
手撕排序算法系列之:冒泡排序。从本篇文章开始,我会介绍并分析常见的几种排序,大致包括插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等。大家可以点击此链接阅读其他排序算法:排序算法_大合集(data-structure_Sort)本篇主要来手撕冒泡排序~~目录1.常见的排序算法1.1交换排序2.冒泡排序的实现2.1基本思想2.2单趟冒泡排序2.2.1思路分析2.2.2单趟代码实现3.冒泡排序代码实现4.冒泡排序测试5.冒泡排序..原创 2022-04-17 14:29:52 · 6181 阅读 · 35 评论 -
[ 数据结构 -- 手撕排序算法第三篇 ] 希尔排序
手撕排序算法系列之:希尔排序。从本篇文章开始,我会介绍并分析常见的几种排序,大致包括插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等。大家可以点击此链接阅读其他排序算法:排序算法_大合集(data-structure_Sort)本篇主要来手撕希尔排序~~目录1.常见的排序算法1.1 插入排序基本思想2.希尔排序2.1希尔排序(缩小增量排序)2.1.1预排序阶段2.1.2插入排序阶段2.2单趟希尔排序2.2.1思路分析3.希尔排...原创 2022-04-18 11:56:33 · 4373 阅读 · 41 评论 -
[ 数据结构 -- 手撕排序算法第四篇 ] 选择排序
手撕排序算法系列之第四篇:选择排序。从本篇文章开始,我会介绍并分析常见的几种排序,大致包括直接插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等。大家可以点击此链接阅读其他排序算法:排序算法_大合集(data-structure_Sort)本篇主要来手撕选择排序~~目录1.常见的排序算法1.1选择排序2.直接选择排序2.1基本思想(一次选一个数)2.1.1选择排序动态视频 *(看视频更好理解)2.2基本思想(一次选两个数)3...原创 2022-04-19 20:30:50 · 2330 阅读 · 16 评论 -
[ 数据结构 -- 手撕排序算法第五篇 ] 快速排序 <包含hoare法,挖坑法,前后指针法> 及其算法优化
手撕排序算法系列之第四篇:快速排序。从本篇文章开始,我会介绍并分析常见的几种排序,大致包括直接插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等。大家可以点击此链接阅读其他排序算法:排序算法_大合集(data-structure_Sort)本篇主要来手撕快速排序算法~1.常见的排序算法1.1交换排序快速排序属于一种交换排序,因此我们在了解快速排序之前,先了解一下交换排序的基本思想。基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记..原创 2022-04-20 18:09:54 · 1197 阅读 · 36 评论 -
[ 数据结构 -- 手撕排序算法第五篇 ] 快速排序 非递归实现
手撕排序算法系列之第五篇:快速排序(下)从本篇文章开始,我会介绍并分析常见的几种排序,大致包括直接插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等。大家可以点击此链接阅读其他排序算法:排序算法_大合集(data-structure_Sort)快速排序的递归实现方法全部总结在这篇:快速排序 <包含hoare法,挖坑法,前后指针法> 及其算法优化这篇文章我们将一起讨论快速排序的非递归实现方法~1.快排非递归的实现思想快排的非递归实现方法是利用了栈(栈 S...原创 2022-04-21 17:49:36 · 6841 阅读 · 33 评论 -
[ 数据结构 -- 手撕排序算法第六篇 ] 归并排序(上)--递归方法实现
手撕排序算法系列之第六篇:归并排序(上)从本篇文章开始,我会介绍并分析常见的几种排序,大致包括直接插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等。大家可以点击此链接阅读其他排序算法:排序算法_大合集(data-structure_Sort)这篇文章我们将一起讨论归并排序的递归方法实现目录1.归并的思想2.归并排序的思想2.1基本思想3.归并排序的代码实现(递归法)4.递归方法的代码解析4.1解析4.2注意事项5.归并排序测试6.原创 2022-04-22 22:00:06 · 1518 阅读 · 24 评论 -
[ 数据结构 -- 手撕排序算法第六篇 ] 归并排序(下)-- 非递归方法实现
手撕排序算法系列之第六篇:归并排序(下)从本篇文章开始,我会介绍并分析常见的几种排序,大致包括直接插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序(上)等。大家可以点击此链接阅读其他排序算法:排序算法_大合集(data-structure_Sort)本篇我们一起来手撕归并排序的非递归实现方法目录1.归并排序非递归的思想2.归并排序非递归的实现步骤及注意事项2.1实现步骤2.2注意事项2.2.1谨防区间访问越界2.2区间修正3.归并非递归...原创 2022-04-23 20:20:33 · 2208 阅读 · 12 评论 -
[ 数据结构 -- 手撕排序算法第七篇 ] 堆、堆排序
1.堆的概念结构及分类以上这段概念描述看起来十分复杂,晦涩难懂。那么堆用通俗语言简单描述如下:堆是一个完全二叉树的顺序存储。在一个堆中,堆的父节点一定大于(或小于)子节点。一旦有一部分不满足则不为堆。堆的性质:1、堆中某个节点的值总是不大于或不小于其父节点的值; 2、堆总是一棵完全二叉树1.2堆的分类1.2.1 大堆在一个堆中,父节点一定大于等于子节点的堆称为大堆。又称大根堆。1.2.2 小堆在一个堆中,父节点一定小于等于子节点的堆称为小堆。又.原创 2022-04-06 20:36:29 · 4108 阅读 · 53 评论 -
[ 数据结构- C语言 ] 堆排序的优化算法
在浏览本篇博文的小伙伴可先浅看一下上篇堆和堆排序的思想:戳这里可跳转上篇博文~~到这里的老铁相比对堆和堆排序有了简单的了解,那么下面我们对之前所写的堆排序进行优化~ Let's go!目录1.堆排序优化算法1.1建堆的时间复杂度1.1.1 向下调整建堆:O(N)1.1.2向上调整建堆:O(N*logN)1.2堆排序的复杂度1.2.1堆排序的时间复杂度1.2.2堆排序的空间复杂度1.3堆排序优化算法的复杂度1.3.1 堆排序优化算法的时间复杂度..原创 2022-04-09 22:58:24 · 3331 阅读 · 38 评论 -
[ 数据结构-C实现 ] 用堆解决TopK问题
TopK问题的引入:想必大家在玩王者农药的时候都遇到过xxx市第xxx韩信,xxx区第xxx赵云。或者说大家今天懒得做饭,想点个外卖,于是乎大家打开美团App,假如说想吃汉堡,大家不知道哪家汉堡好吃,选择了一项叫按评分优先排序,选择排名靠前的店购买。学校有专业前10名。企业有世界500强等等等。这些问题都要对大量数据进行排序,选出较大的K个数据,这里就需要使用TopK算法来解决此类问题。目录1.什么是TopK问题?1.1Top-k问题的基本思路2.Top-K问题逻辑分析2.1建堆..原创 2022-04-10 23:29:18 · 1549 阅读 · 40 评论 -
[ 数据结构 -- C语言版] 一篇文章总结常见的七大排序算法
本篇文章总结了数据结构中常见的七大排序,让大家一篇文章能够收集到七大排序算法。包括:直接插入排序,冒泡排序,选择排序,希尔排序,堆排序,快速排序,归并排序。目录1. 什么是排序1.1常见的排序算法2. 直接插入排序3.冒泡排序4.希尔排序5.选择排序6.堆排序6.1什么是堆,堆的实现6.2堆排序的优化算法6.3堆排序的应用之解决Top-K问题7.快速排序7.1快速排序递归算法7.2快速排序非递归算法8.归并排序8.1归并排序递归算法..原创 2022-04-24 20:41:05 · 1537 阅读 · 37 评论