什么是Python中的冒泡排序?请举个例子进行说明。
冒泡排序是一种将列表按升序(或降序)排序的算法。这是最简单的排序算法,但效率并不高。它可以用于较小的输入大小,但对于长度较大的列表或数组,不具备时间效率。它的时间复杂度为O(n^2)。然而,这是一种原地排序算法,这意味着它不使用任何额外的空间。因此,在空间复杂度方面,它是有效的。但是,由于存在更好的排序算法,因此不常使用冒泡排序。
更多Python相关文章,请阅读:Python 教程
冒泡排序的工作原理是什么?
冒泡排序使用两个for循环。外部for循环迭代列表。内部for循环对于所有外部循环迭代,也迭代列表。
冒泡排序的主要操作是比较两个连续的元素。如果第一个元素大于下一个元素,则交换两者,使较小的元素排在前面,较大的元素排在后面。在外部循环的一次迭代中,列表中最大的元素在最后一个索引处。在外层循环的第二次迭代中,列表的第二大元素位于倒数第二个索引处,以此类推。因此,在所有迭代结束后,我们获得排序后的列表。
我们可以通过一个例子来更好地理解。
例如
我们需要对以下列表进行排序。
5 | 2 | 1 | 3 | 4 |
---|---|---|---|---|
外部循环=1
5 | 2 | 1 | 3 | 4 |
---|---|---|---|---|
5>2,因此交换两者
2 | 5 | 1 | 3 | 4 |
---|---|---|---|---|
5>1,因此交换两者
2 | 1 | 5 | 3 | 4 |
---|---|---|---|---|
5>3,因此交换两者
2 | 1 | 3 | 5 | 4 |
---|---|---|---|---|
5>4,因此交换两者
2 | 1 | 3 | 5 | 4 |
---|---|---|---|---|
(最大的元素5在第一次迭代的最后一个索引处达到)
外部循环=2
2 | 1 | 3 | 5 | 4 |
---|---|---|---|---|
2>1,因此交换
1 | 2 | 3 | 5 | 4 |
---|---|---|---|---|
不需要交换
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
不需要交换
1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|
正如我们所看到的,列表在第二次迭代中已排序。但是外部循环将再迭代3次,但没有进一步的交换操作。因此,示例仅显示了2次迭代。有时,列表可以在第一次迭代中排序。有时,列表可能在最后一次迭代中排序。因此,外部循环始终会迭代n次。
例子
def bubble_sort(arr):
for i in range(len(arr)):
for j in range(len(arr)-1):
if(arr[j]>arr[j+1]):
temp=arr[j]
arr[j]=arr[j+1]
arr[j+1]=temp
return arr
array=[2,3,1,5,4]
print(bubble_sort(array))
输出
[1, 2, 3, 4, 5]