0
点赞
收藏
分享

微信扫一扫

Python插入排序

Python插入排序

1. 算法介绍

插入排序(Insertion Sort)是一种简单直观的排序算法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。插入排序的实现过程可以分为两步:

  1. 找到插入位置:遍历已排序的部分,找到合适的位置将待排序元素插入到该位置。
  2. 插入元素:将待排序元素插入到已排序的部分,同时将大于待排序元素的元素都向后移动一个位置。

以下是Python插入排序的详细步骤:

步骤 描述
Step 1 从第二个元素开始,依次将元素插入已排序的部分
Step 2 遍历已排序的部分,找到合适的插入位置
Step 3 将待排序元素插入合适的位置
Step 4 将大于待排序元素的元素向后移动一个位置

2. 代码实现

下面是使用Python实现插入排序的代码:

def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]  # 当前待排序元素
        j = i - 1  # 已排序元素的最后一个索引

        # 遍历已排序的部分,找到合适的插入位置
        while j >= 0 and key < arr[j]:
            arr[j + 1] = arr[j]  # 将大于待排序元素的元素向后移动一个位置
            j -= 1

        arr[j + 1] = key  # 将待排序元素插入合适的位置

    return arr

3. 代码解析

让我们来详细解析一下上面的代码:

  • insertion_sort函数接受一个列表作为参数,并返回排序后的结果。
  • for循环从第二个元素开始遍历,依次将元素插入已排序的部分。
  • key变量存储当前待排序的元素。
  • j变量存储已排序元素的最后一个索引。
  • while循环用来遍历已排序的部分,找到合适的插入位置。
  • 内部的while循环会不断将大于待排序元素的元素向后移动一个位置。
  • arr[j + 1] = key将待排序元素插入合适的位置,完成一次插入操作。
  • 最后,返回排序后的结果。

4. 示例

让我们来看一个例子,使用上述的插入排序代码对一个列表进行排序:

arr = [5, 2, 4, 6, 1, 3]
sorted_arr = insertion_sort(arr)
print(sorted_arr)

运行以上代码,输出结果为:

[1, 2, 3, 4, 5, 6]

如上所示,插入排序算法成功地将列表 [5, 2, 4, 6, 1, 3] 排序为 [1, 2, 3, 4, 5, 6]

5. 可视化

为了更好地理解插入排序的过程,我们可以使用可视化工具来展示排序的步骤。下面是使用Mermaid语法绘制的排序过程的旅行图(Journey)和状态图(State Diagram)。

journey
    title Insertion Sort Journey

    section Initialization
    "Input Array" --> "Unsorted Array"

    section Sorting
    "Unsorted Array" --> "Sorted Array"
    "Sorted Array" --> "Sorted Array"

    section Completion
    "Sorted Array" --> "Output Array"
stateDiagram
    [*] --> Unsorted
    Unsorted --> Sorted
    Sorted --> [*]

上面的旅行图展示了整个排序过程的流程,从初始化到排序,最后完成排序。状态图则展示了排序过程中的状态变化,从未排序到已排序。

6. 总结

举报

相关推荐

0 条评论