Lazy loaded image
🤯<Python> 排序算法
字数 1572阅读时长 4 分钟
2024-10-11
2024-10-12
type
status
date
slug
summary
tags
category
icon
password
四种常见的排序算法的详细解释及其对应的Python代码实现:
  1. 冒泡排序(Bubble Sort)
  1. 堆排序(Heap Sort)
  1. 插入排序(Insertion Sort)
  1. 选择排序(Selection Sort)

1. 冒泡排序(Bubble Sort)

算法简介

冒泡排序是一种简单的排序算法,重复地遍历要排序的数列,一次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有需要交换的,也就是说该数列已经排序完成。

Python代码实现

运行结果

算法分析

  • 时间复杂度
    • 最佳情况:O(n)(当数组已经有序时)
    • 平均和最坏情况:O(n²)
  • 空间复杂度:O(1)(原地排序)
  • 稳定性:稳定

2. 堆排序(Heap Sort)

算法简介

堆排序是一种基于比较的排序算法,利用堆这种数据结构来排序。堆是一种完全二叉树,分为最大堆和最小堆。堆排序通常使用最大堆,先构建一个最大堆,然后将堆顶元素(最大值)与堆的最后一个元素交换,之后对剩下的元素重新调整为最大堆,如此反复,直到整个数组有序。

Python代码实现

运行结果

算法分析

  • 时间复杂度
    • 所有情况:O(n log n)
  • 空间复杂度:O(1)(原地排序)
  • 稳定性:不稳定

3. 插入排序(Insertion Sort)

算法简介

插入排序是一种简单直观的排序算法,类似于整理扑克牌的方式。它通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

Python代码实现

运行结果

算法分析

  • 时间复杂度
    • 最佳情况:O(n)(当数组已经有序时)
    • 平均和最坏情况:O(n²)
  • 空间复杂度:O(1)(原地排序)
  • 稳定性:稳定

4. 选择排序(Selection Sort)

算法简介

选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

Python代码实现

运行结果

算法分析

  • 时间复杂度
    • 所有情况:O(n²)
  • 空间复杂度:O(1)(原地排序)
  • 稳定性:不稳定

总结

以上四种排序算法各有优缺点:
  1. 冒泡排序:实现简单,但效率较低,适用于小规模数据。
  1. 堆排序:时间复杂度稳定为O(n log n),适用于大规模数据,但不稳定。
  1. 插入排序:在数据基本有序的情况下效率较高,适用于小规模数据,且稳定。
  1. 选择排序:实现简单,但效率不高,不适合大规模数据,不稳定。
根据具体的应用场景和数据特点选择合适的排序算法,可以在保证效率的同时满足稳定性等需求。

如果你对某个排序算法有更多的问题或需要更详细的解释,欢迎继续提问!

PythonForAlgorithm

上一篇
<Python> 快速排序
下一篇
认识一下我吧

评论
Loading...