tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Java

  • SpringBoot

  • SpringCloud

  • Mysql

  • docker

  • 算法与设计模式

    • 算法初入
    • 十大经典排序算法
      • 1.冒泡排序(Bubble Sort)
      • 2.选择排序(Selection Sort)
      • 3.插入排序(Insertion Sort)
      • 4.希尔排序(Shell Sort)
      • 5.归并排序(Merge Sort)
      • 6.快速排序(Quick Sort)
      • 7.堆排序(Heap Sort)
      • 8.计数排序(Counting Sort)
      • 9.桶排序(Bucket Sort)
      • 10.基数排序(Radix Sort)
    • 动态规划-1
    • 设计模式初入
    • 六大设计原则
    • 单例模式与工厂模式
    • 代理模式和模版模式
    • 策略模式和观察者模式
  • 踩坑与提升

  • 后端
  • 算法与设计模式
EffectTang
2023-11-14
目录

十大经典排序算法

# 十大经典排序算法

十种常见排序算法可以分为两大类:

  • 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
  • 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。

https://www.cnblogs.com/onepixel/articles/7674659.html

# 1.冒泡排序(Bubble Sort)

冒泡排序是一种简单的排序算法。

算法描述:

从数据的第一个开始,每次比较相邻的2个元素,如果左边元素比右边大,则进行位置交换(也可以小才进行位置交换),否则继续进行下一组的比较。(如:第一次比较1和2,第二次比较2和3)

当比完所有元素后,再次从第一个元素开始,对其后的n-1个元素重复上面的操作。

直到n-1为1,到此排序完成。

每一轮的比较都会将其中最大(小)的元素排到队尾。

public static void bubbleSort(Integer[] arr) {
        for (int i = 0; i <arr.length-1 ; i++) {
            for (int j = 0; j < arr.length-1-i; j++) {
                if(arr[j]>arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }
// Java版本
1
2
3
4
5
6
7
8
9
10
11
12
  • 时间复杂度:冒泡排序的时间复杂度为O(n²),其中n表示列表中的元素数量。这是因为冒泡排序在每一次迭代中都要遍历整个列表,总共需要进行n-1次迭代。
  • 空间复杂度:空间复杂度为O(1),即它需要的额外存储空间与列表中元素的数量无关,始终保持在一个固定值上。

# 2.选择排序(Selection Sort)

# 3.插入排序(Insertion Sort)

# 4.希尔排序(Shell Sort)

# 5.归并排序(Merge Sort)

# 6.快速排序(Quick Sort)

# 7.堆排序(Heap Sort)

# 8.计数排序(Counting Sort)

# 9.桶排序(Bucket Sort)

# 10.基数排序(Radix Sort)

上次更新: 2025/04/23, 16:23:16
算法初入
动态规划-1

← 算法初入 动态规划-1→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式