我的意思师写一个实现冒泡排序的算法
时间: 2023-05-27 15:03:22 浏览: 74
冒泡排序(Bubble Sort)是一种简单的排序算法,它对要排序的数组从头到尾进行多次遍历,每次遍历都将相邻的两个元素进行比较,如果它们的顺序不正确就交换位置,经过多次遍历后,就可以使数组按照从小到大(或从大到小)排序。
以下是实现冒泡排序的算法,使用 Python 语言编写:
```python
def bubble_sort(nums):
n = len(nums)
for i in range(n - 1):
swapped = False
for j in range(n - 1 - i):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
swapped = True
if not swapped:
# 如果本次遍历没有发生交换,则说明已经排序完成,直接退出循环
break
return nums
```
代码解释:
- nums:要排序的数组;
- n:数组长度;
- i:外层循环变量,用于控制循环次数;
- swapped:标记变量,记录本次遍历是否发生交换;
- j:内层循环变量,用于比较相邻元素的大小。
算法思路:从头到尾遍历数组,每次将相邻的两个元素进行比较,如果它们的顺序不正确就交换位置,经过多次遍历后,就可以使数组按照从小到大(或从大到小)排序。
算法优化:为了提高算法的效率,在每一次遍历中,如果本次遍历没有发生交换,说明数组已经有序,直接退出循环即可。
算法复杂度:
- 时间复杂度:最好情况下,数组已经有序,只需要进行一次遍历,时间复杂度为 O(n);最坏情况下,数组完全逆序,需要进行 n-1 次遍历,时间复杂度为 O(n^2);平均情况下,时间复杂度也为 O(n^2)。
- 空间复杂度:冒泡排序是一种原地排序算法,不需要额外的空间。
使用示例:
```python
nums = [3, 2, 5, 1, 4]
sorted_nums = bubble_sort(nums)
print(sorted_nums) # 输出 [1, 2, 3, 4, 5]
```