一次性看懂10种排序算法(附代码)

常见的排序算法可以根据其实现原理分为以下几类,每种算法都有其特定的应用场景和性能特点:


1. 比较排序(基于元素比较)

  • 冒泡排序(Bubble Sort)

    • 原理:通过相邻元素交换,逐步将最大值“冒泡”到数组末尾。
    • 时间复杂度:平均和最坏情况 (O(n^2)),最好情况 (O(n))(已排序时)。
    • 特点:简单但效率低,稳定排序。
  • 选择排序(Selection Sort)

    • 原理:每次选择最小元素放到已排序区间的末尾。
    • 时间复杂度:始终 (O(n^2))。
    • 特点:不稳定,适合小规模数据。
  • 插入排序(Insertion Sort)

    • 原理:逐个将元素插入已排序区间的正确位置。
    • 时间复杂度:平均和最坏 (O(n^2)),最好 (O(n))(已排序时)。
    • 特点:稳定,适合小规模或部分有序数据。
  • 快速排序(Quick Sort)

    • 原理:分治法,选择一个基准元素,将数组分为两部分递归排序。
    • 时间复杂度:平均 (O(n \log n)),最坏 (O(n^2))(如已排序且基准选择不当)。
    • 特点:高效且原地排序,不稳定,实际应用广泛。
  • 归并排序(Merge Sort)

    • 原理:分治法,将数组分为两半分别排序后合并。
    • 时间复杂度:始终 (O(n \log n))。
    • 特点:稳定,但需要额外空间,适合链表或外部排序。
  • 堆排序(Heap Sort)

    • 原理:利用堆结构(完全二叉树)实现选择排序。
    • 时间复杂度:始终 (O(n \log n))。
    • 特点:原地排序,不稳定,适合大数据量。
  • 希尔排序(Shell Sort)

    • 原理:改进的插入排序,通过分组逐步缩小间隔排序。
    • 时间复杂度:(O(n \log n)) 到 (O(n^2)),取决于增量序列。
    • 特点:不稳定,适合中等规模数据。

2. 非比较排序(基于元素分布特性)

  • 计数排序(Counting Sort)

    • 原理:统计元素出现次数,适用于整数且范围较小的情况。
    • 时间复杂度:(O(n + k))((k) 为数据范围
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

There Is No Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值