用python写一段冒泡排序
时间: 2023-09-06 18:04:40 浏览: 170
### 回答1:
下面是用 Python 写的冒泡排序的代码:
```
def bubble_sort(nums):
# 遍历所有数字
for i in range(len(nums)):
# 标记是否发生交换
swapped = False
# 遍历所有数字,并尝试交换相邻的两个数字
for j in range(len(nums) - i - 1):
if nums[j] > nums[j + 1]:
# 发生交换,标记
swapped = True
# 交换两个数字
nums[j], nums[j + 1] = nums[j + 1], nums[j]
# 如果没有发生交换,说明已经排序完成,退出循环
if not swapped:
break
return nums
# 测试
print(bubble_sort([5, 2, 3, 1, 4])) # [1, 2, 3, 4, 5]
print(bubble_sort([1, 2, 3, 4, 5])) # [1, 2, 3, 4, 5]
print(bubble_sort([5, 4, 3, 2, 1])) # [1, 2, 3, 4, 5]
```
冒泡排序的基本思想是:通过多次遍历列表,依次比较相邻的两个数字,如果顺序不正确就交换位置。每遍历一次列表,就能确定一个数字的最终位置,所以总共需要遍历 len(nums) 次。
代码中的变量 swapped 用来标记是否发生交换,如果没有发生交换,就说明列表已经有序,可以退出循环。这样可以提升冒泡排序的效率,使得时间复杂度达到最优的 O(n)。
### 回答2:
冒泡排序是一种简单但效率较低的排序算法。它重复地遍历待排序序列,每次比较相邻的两个元素,如果顺序错误则交换它们,直到整个序列都变得有序为止。以下是使用Python编写的冒泡排序算法:
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n-1):
for j in range(n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
# 测试示例
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("排序结果:")
for i in range(len(arr)):
print(arr[i], end=" ")
```
运行上述代码,将输出排序结果:11 12 22 25 34 64 90。首先,通过`bubble_sort`函数传入待排序的数组。内部的两个嵌套循环遍历数组,比较相邻元素,如果当前元素大于下一个元素,则交换它们的位置。外层循环重复n-1次(n为数组长度),每次将最大的元素"冒泡"到末尾。所以,内层循环每次迭代的范围逐渐减少1,以避免重复比较已经确定顺序的元素。最后打印出排序结果。
### 回答3:
冒泡排序是一种简单的排序算法,它会重复地比较相邻的两个元素,如果它们的顺序不正确就交换它们,直到整个序列有序为止。以下是使用Python编写的冒泡排序算法示例:
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n):
# 每轮冒泡排序都能将最大的数放到末尾
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
# 交换相邻的元素
arr[j], arr[j+1] = arr[j+1], arr[j]
# 测试示例
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("排序后的数组:")
for i in range(len(arr)):
print(arr[i], end=" ")
```
输出结果为:11 12 22 25 34 64 90
在这个示例中,我们定义了一个名为`bubble_sort`的函数,该函数接受一个整数数组作为输入。我们使用两个嵌套的for循环来实现冒泡排序的逻辑。外循环是迭代整个数组,而内循环则用于比较和交换相邻的元素。如果相邻的元素之间的顺序不正确,我们使用元组解包的方式交换它们的值。
在测试示例中,我们创建了一个包含需要排序的数字的数组。然后,我们调用`bubble_sort`函数对数组进行排序。最后,我们使用一个循环遍历排序后的数组,并将每个元素打印出来。
这个示例演示了如何使用Python编写一个简单的冒泡排序算法。冒泡排序虽然简单易懂,但由于其时间复杂度为O(n^2),对于大型数据集来说效率较低,因此在实际应用中更常使用其他更高效的排序算法。
阅读全文