用Python写冒泡排序
时间: 2023-09-12 09:05:02 浏览: 74
### 回答1:
好的,下面是 Python 写的冒泡排序的例子:
```
def bubble_sort(lst):
n = len(lst)
for i in range(n-1): # 比较n-1轮
for j in range(n-1-i): # 每轮比较n-1-i次
if lst[j] > lst[j+1]: # 如果当前元素比后一个大,就交换它们的位置
lst[j], lst[j+1] = lst[j+1], lst[j]
return lst
print(bubble_sort([3, 4, 2, 1])) # [1, 2, 3, 4]
```
冒泡排序的时间复杂度为 O(n^2),是一种比较慢的排序算法。如果你的数据规模较大,可能需要使用更快的排序算法。
### 回答2:
冒泡排序是一种简单的排序算法,用于将一组数据按照特定的顺序进行排序。下面是用Python语言实现冒泡排序的代码:
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n-1):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 测试代码
arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("排序结果:", sorted_arr)
```
上述代码中,`bubble_sort`函数接受一个数组作为参数,并在原址上对数组进行排序。在函数体内,首先使用`len()`函数获取数组的长度,然后使用两个嵌套的`for`循环进行排序。外层循环控制比较轮数,内层循环进行具体的比较和交换操作。
每一轮内层循环中,从数组的第一个元素开始,依次比较相邻的两个元素。如果前一个元素大于后一个元素,则交换它们的位置。重复这个操作直到数组末尾,这样一轮循环下来,最大的元素就会被放到数组的最后位置。然后继续进行下一轮循环,但这次内层循环的范围将会缩小一个元素。经过多轮循环,直到所有元素都按照顺序排列,排序完成。
对于给定的测试数组`arr = [64, 34, 25, 12, 22, 11, 90]`,运行代码后会输出排序结果`[11, 12, 22, 25, 34, 64, 90]`。
### 回答3:
冒泡排序是一种基本的排序算法,它通过不断交换相邻元素的位置来将最大的元素逐渐“冒泡”到正确的位置。下面是用Python写的冒泡排序代码:
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n-1):
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("%d" %arr[i], end=" ")
```
在上面的代码中,我们首先定义了一个`bubble_sort`函数,该函数接受一个数组作为参数。在函数内部,我们用两个嵌套的循环遍历这个数组,外层循环从0到n-1进行迭代,内层循环从0到n-i-1进行迭代。在每一次内层循环时,我们比较相邻的两个元素,如果前面的元素比后面的元素大,则进行交换。这样,每一次内层循环结束时,最大的元素都会冒泡到数组的末尾。通过多次进行这样的交换,我们最终就能得到一个有序的数组。
在例子中,我们定义了一个名为`arr`的测试数组,并调用了`bubble_sort`函数对其进行排序。最后,我们通过循环打印出排序后的数组。对于给定的测试数组,冒泡排序的输出结果为:11 12 22 25 34 64 90。
阅读全文