用 python 写一个适用于大规模数据的冒泡排序
时间: 2024-03-02 16:51:57 浏览: 17
冒泡排序的时间复杂度为 O(n^2),不太适合大规模数据的排序。如果要排序大规模数据,可以使用其他更高效的排序算法,如快速排序、归并排序、堆排序等。不过,如果非要使用冒泡排序,可以对其进行一些优化,以提高效率。
其中一种优化方式是设置一个标志位,记录上一次排序时的最后交换位置,下一次排序时只需要比较到该位置即可。如果该位置没有发生交换,则说明剩余的元素已经有序,可以直接退出循环。
以下是 Python 冒泡排序的优化代码示例:
```python
def bubble_sort(arr):
n = len(arr)
last_swap = n - 1
while last_swap > 0:
k = last_swap
last_swap = 0
for i in range(k):
if arr[i] > arr[i+1]:
arr[i], arr[i+1] = arr[i+1], arr[i]
last_swap = i
if last_swap == 0:
break
# 测试
import random
arr = [random.randint(1, 1000) for _ in range(10000)]
bubble_sort(arr)
print("排序后的数组为:")
for i in range(len(arr)):
print(arr[i])
```
该代码可对长度为 10000 的数组进行排序,但是时间复杂度仍然为 O(n^2),所以对于更大规模的数据,建议使用其他更高效的排序算法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)