用列表实现插入排序算法,python
时间: 2023-05-23 09:05:07 浏览: 80
03_insert_sort_插入排序算法_
实现插入排序的 Python 代码如下所示:
```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
```
在这个函数中,我们首先迭代数组并针对每一个元素执行该操作:我们为这个元素设置关键值,也就是要排序的值,然后将其与此前的那些元素进行比较,以确定关键值在有序数组(稍后生成)中所处的位置。
在代码中,我们使用 while 循环,将 j 从当前位置减一(它的初始值是i-1)开始迭代,如果存在当前元素 arr[j] 比关键值 key 大的情况(因为 arr 已经部分排序过了),我们移动 arr[j] 一个位置到其右边,以便在之后的循环迭代中给关键值 key 腾出合适的位置。
最后,我们为关键值 key 腾出的位置赋值,并按照序列 idx 一直迭代到其末尾。接着将有序列表返回即可。
下面是该算法使用的示例。假设数组 a 中有7个值,需要对它们进行排序。调用 insertion_sort 函数,将需要排序的数组 a 传入,可得到其按递增顺序排列的新数组。
```python
a = [9, 5, 1, 4, 3, 7, 6]
sorted_a = insertion_sort(a)
print(sorted_a) # 输出为 [1, 3, 4, 5, 6, 7, 9]
```
阅读全文