排序算法 | 平均时间复杂度 | 最好情况 | 最坏情况 | 空间复杂度 | 排序方式 | 稳定性 |
---|
冒泡排序 | O(n2) | O(n) | O(n2) | O(1) | In-place | 稳定 |
选择排序 | O(n2) | O(n2) | O(n2) | O(1) | In-place | 不稳定 |
插入排序 | O(n2) | O(n) | O(n2) | O(1) | I |
```C++
//
// Created by agile on 2024/3/19.
//
#include "iostream"
#include "functional"
#ifndef LEETCODETEST_SORTS_H
#define LEETCODETEST_SORTS_H
class Sorts {
private:
Sorts() = default;
pu
---
title: 十大排序从入门到入赘
tags:
- 排序算法
- 算法与数据结构
categories: 算法与数据结构
description: 两万五千字全面介绍如下十种排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、基数排序、桶排序。
cover: >-
https://raw.githubusercontent.com/iyuk
### 前言
在数据结构和算法中,排序是非常重要的一环,并且**排序也是渗透编程的方方面面**。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019111400041695.gif)
你或许在写一个`sql的order by`按照某组进行排序,又或者你在刷一道题时候、常常遇到`贪心+自定义排序`求解的思路题,或者变态的面试官让你`手写快排`,又或者是ap
@[TOC](文章目录)
>微信公众号:`bigsai`
>[数据结构与算法专栏](https://blog.csdn.net/qq_40693171/category_9294156.html)
## 前言
在排序中,我们可能大部分更熟悉冒泡排序、快排之类。对归并排序可能比较陌生。然而事实上归并排序也是一种稳定的排序,时间复杂度为O(nlogn).
归并排序是基于分治进行归并的,有**二路
@[TOC](文章目录)
## 前言
欢迎大家关注我的[数据结构与算法专栏](https://blog.csdn.net/qq_40693171/category_9294156.html)哈!,无论是日后面试还是笔试的,排序在数据结构与算法中有着举足轻重的地位,所以还是决定把数据结构这个专题好好写写,多研究研究!今天和大家一起学习**交换类排序**——冒泡和快排详解!
![在这里插入图片描述]
## 前言
计算机课上,老师给一串数字**6 1 6 9 9 1 4 2 1 5 8 8**,问道:这一串数字,你们写个程序给我看,要求效率较高。学不出来的别下课了。
顿时场下一片哗然,但有很多小朋友硬着头皮啪啪啪的开始敲了。
老师走到**pigpian**身边,**pigpian**很难得皱了皱眉头
![在这里插入图片描述](https://img-blog.csdnimg.cn/20
>原创公众号:`bigsai`,码字不易,如有帮助,记得三联!
## 前言
在个人的专栏中,其他排序陆陆续续都已经写了,而堆排序迟迟没有写,在国庆假期的尾声,把堆排序也写一写。
>[插入类排序—(折半)插入排序、希尔排序](https://blog.csdn.net/qq_40693171/article/details/102817177)
[交换类排序—冒泡排序、快速排序手撕图解](http
@[toc](目录)
## 前言
在数据结构与算法的排序中,我们很多人可能更多的熟悉冒泡排序、快速排序、归并排序。可能对堆排序、桶排序、计数排数等比较生疏,其实这个也没啥复杂的,**桶排序是所有排序中最简单的排序之一。** 没毛病老铁,就是最简单的之一。 并且桶排序和`计数排序`,`基数排序`有很多相似和渊源之处。后面会进行对比分析记得先关注!
![在这里插入图片描述](https://img-
# 双轴快排
## 前言
在排序算法中,快排是占比非常多的一环,但是快排其思想一直被考察研究,也有很多的优化方案。这里主要讲解双轴快排的思想和实现。
首选,双轴快排也是一种快排的优化方案,在JDK的Arrays.sort()中被主要使用。所以,掌握快排已经不能够满足我们的需求,我们还要学会双轴快排的原理和实现才行。
## 回顾单轴快排
单轴快排也就是我们常说的普通快速排序,对于