Python插入排序
1. 算法介绍
插入排序(Insertion Sort)是一种简单直观的排序算法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。插入排序的实现过程可以分为两步:
- 找到插入位置:遍历已排序的部分,找到合适的位置将待排序元素插入到该位置。
- 插入元素:将待排序元素插入到已排序的部分,同时将大于待排序元素的元素都向后移动一个位置。
以下是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 --> [*]
上面的旅行图展示了整个排序过程的流程,从初始化到排序,最后完成排序。状态图则展示了排序过程中的状态变化,从未排序到已排序。