现在有多种排序算法,请使用插入排序,python语言对1000以内的一定随机数进行排序,随机数的个数是这样定义的,如你的学号是:20204075117,则生成的随机数个数为20+20+40+75+117=272,即对1000以内的272个随机数进行排序,同时使用柱状图完成排序的动画演示。
时间: 2024-03-11 08:50:45 浏览: 58
python取均匀不重复的随机数方式
好的,我可以帮你实现这个问题。这里我将使用插入排序算法来进行排序。插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。下面是代码实现:
```python
import random
import matplotlib.pyplot as plt
# 生成随机数
num_list = [random.randint(1, 1000) for _ in range(272)]
# 插入排序
def insert_sort(nums):
n = len(nums)
for i in range(1, n):
j = i
while j > 0 and nums[j-1] > nums[j]:
nums[j], nums[j-1] = nums[j-1], nums[j]
j -= 1
# 更新柱状图
plt.cla()
plt.bar(range(len(nums)), nums)
plt.pause(0.01)
insert_sort(num_list)
# 初始化柱状图
plt.bar(range(len(num_list)), num_list)
plt.show()
```
接着,我们使用Matplotlib库来实现柱状图动画演示。每次交换两个元素时,就更新柱状图并显示出来。插入排序的主要操作是比较和交换,因此我们只需要在比较和交换的时候更新柱状图即可。下面是完整代码实现:
```python
import random
import matplotlib.pyplot as plt
# 生成随机数
num_list = [random.randint(1, 1000) for _ in range(272)]
# 插入排序
def insert_sort(nums):
n = len(nums)
for i in range(1, n):
j = i
while j > 0 and nums[j-1] > nums[j]:
nums[j], nums[j-1] = nums[j-1], nums[j]
j -= 1
# 更新柱状图
plt.cla()
plt.bar(range(len(nums)), nums)
plt.pause(0.01)
insert_sort(num_list)
# 初始化柱状图
plt.bar(range(len(num_list)), num_list)
plt.show()
```
运行该程序,就可以看到柱状图动画演示了。每次比较或交换两个元素时,柱状图就会更新并显示出来,直到排序完成。
阅读全文