用python的matplotlib写给数组排序
时间: 2023-02-17 21:12:18 浏览: 208
可以使用python中的内置函数sorted()来对数组进行排序。
示例代码:
```python
import matplotlib.pyplot as plt
# 定义数组
arr = [3, 1, 4, 2, 5]
# 使用sorted()函数对数组进行排序
sorted_arr = sorted(arr)
# 使用matplotlib绘图
plt.plot(sorted_arr)
plt.show()
```
如果想要降序排序可以在sorted()中加入参数reverse=True
```python
sorted_arr = sorted(arr, reverse=True)
```
相关问题
用python编写一个堆排序算法,分别对含有1到10000的随机数据的数组进行排序,输出时间,并绘制数据量与运行时间的图
好的,以下是用 Python 编写的堆排序算法,并绘制数据量与运行时间的图表:
```python
import random
import time
import matplotlib.pyplot as plt
def heap_sort(arr):
def heapify(arr, n, i):
largest = i
l = 2 * i + 1
r = 2 * i + 2
if l < n and arr[i] < arr[l]:
largest = l
if r < n and arr[largest] < arr[r]:
largest = r
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
n = len(arr)
for i in range(n//2 - 1, -1, -1):
heapify(arr, n, i)
for i in range(n-1, 0, -1):
arr[i], arr[0] = arr[0], arr[i]
heapify(arr, i, 0)
# 生成随机数据并进行排序
x = []
y = []
for n in range(1, 10001):
arr = [random.randint(1, 10000) for _ in range(n)]
start_time = time.time()
heap_sort(arr)
end_time = time.time()
x.append(n)
y.append(end_time - start_time)
# 绘制图表
plt.plot(x, y)
plt.xlabel("数据量")
plt.ylabel("运行时间(秒)")
plt.title("堆排序算法的运行时间")
plt.show()
```
在上面的代码中,我们定义了一个函数 `heap_sort` 来实现堆排序算法。然后,我们利用 `random` 模块生成含有 1~10000 个数据的随机数组,并对其进行排序。我们分别对含有 1~10000 个数据的数组进行排序,并输出排序所需的时间。最后,我们利用 `matplotlib` 模块绘制了数据量与运行时间的图表。
用python编写一个基数排序算法,对含有1到1000个随机数据的数组进行排序,算法对每个数组测100次运行时间取平均值,绘制运行数据量与运行时间的关系图
好的,下面是用 Python 编写的基数排序算法,并且绘制了运行数据量与运行时间的关系图:
```python
import random
import time
import matplotlib.pyplot as plt
def radix_sort(arr):
# 确定基数
radix = 10
# 确定最大位数
max_length = len(str(max(arr)))
# 进行基数排序
for i in range(max_length):
buckets = [[] for _ in range(radix)]
for element in arr:
digit = (element // (radix ** i)) % radix
buckets[digit].append(element)
arr = [element for bucket in buckets for element in bucket]
return arr
# 生成随机数据
data_sizes = list(range(1, 1001))
data = [random.randint(1, 1000) for i in range(1000)]
# 对数据进行 100 次排序,并统计时间
avg_times = []
for size in data_sizes:
total_time = 0
for i in range(100):
start_time = time.time()
radix_sort(data[:size])
end_time = time.time()
total_time += (end_time - start_time)
avg_time = total_time / 100
avg_times.append(avg_time)
print(f"排序数据量为{size},平均用时{avg_time:.6f}秒")
# 绘制运行数据量与运行时间的关系图
plt.plot(data_sizes, avg_times)
plt.title("Radix Sort")
plt.xlabel("Data Size")
plt.ylabel("Time (s)")
plt.show()
```
代码中,我们首先利用`random`模块生成了含有 1 到 1000 个随机数据的数组,然后对数组进行了 100 次基数排序,每次排序的数据量从 1 逐渐增加到 1000,并统计了每次排序所用的时间,最后计算出了每个数据量下的平均用时,并绘制了运行数据量与运行时间的关系图。
需要注意的是,由于基数排序算法的时间复杂度较低,因此程序可以在较短的时间内完成。在本例中,我们最多只对 1000 个数据进行排序,因此程序也可以在较短的时间内完成。
阅读全文