做一个直接插入排序动画
时间: 2023-10-08 12:08:58 浏览: 48
好的,以下是一个直接插入排序的动画,希望能帮到你。
首先,我们定义一个数组,然后随机生成一些数字填充进去,作为排序的初始状态。
```python
import random
# 定义数组
arr = []
# 随机生成10个数字
for i in range(10):
arr.append(random.randint(1, 100))
print("排序前的数组:", arr)
```
接下来,我们开始进行直接插入排序。在排序过程中,我们将数组分为已排序区间和未排序区间。初始时,已排序区间只有一个元素,就是数组的第一个元素,其余元素都是未排序的。然后,我们遍历未排序区间中的每个元素,将其插入到已排序区间中的合适位置,直到未排序区间中的所有元素都被插入到已排序区间中。
```python
# 直接插入排序
for i in range(1, len(arr)):
# 未排序区间中的第一个元素
key = arr[i]
# 已排序区间的最后一个元素
j = i - 1
# 从已排序区间的最后一个元素开始,找到key应该插入的位置
while j >= 0 and arr[j] > key:
arr[j+1] = arr[j]
j -= 1
# 插入key
arr[j+1] = key
print("排序中的数组:", arr)
```
最后,我们输出排序后的数组。
```python
print("排序后的数组:", arr)
```
完整代码如下:
```python
import random
# 定义数组
arr = []
# 随机生成10个数字
for i in range(10):
arr.append(random.randint(1, 100))
print("排序前的数组:", arr)
# 直接插入排序
for i in range(1, len(arr)):
# 未排序区间中的第一个元素
key = arr[i]
# 已排序区间的最后一个元素
j = i - 1
# 从已排序区间的最后一个元素开始,找到key应该插入的位置
while j >= 0 and arr[j] > key:
arr[j+1] = arr[j]
j -= 1
# 插入key
arr[j+1] = key
print("排序中的数组:", arr)
print("排序后的数组:", arr)
```
运行程序,你可以看到排序过程中数组的变化。