冒泡排序算法
冒泡排序是一种简单的排序算法,它的基本思想是:对待排序的元素进行两两比较,如果它们的顺序错误就交换位置,直到没有需要交换的元素,排序完成。
冒泡排序的复杂度为O(n^2),因此在处理大量数据时效率较低,但是对于小规模的数据排序则非常有效。
下面是冒泡排序算法的基本流程:
- 比较相邻的元素,如果前一个比后一个大,就交换它们的位置。
- 对每一对相邻元素做同样的工作,从开始的第一对到结尾的最后一对。在这一步结束之后,最后的元素会是列表中最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较为止。
示例一:实现冒泡排序算法
下面是一个用Python实现冒泡排序算法的示例代码:
def bubble_sort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already sorted
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])
执行结果如下:
排序后的数组为:
11
12
22
25
34
64
90
示例二:使用冒泡排序算法对字符串数组进行排序
下面是一个使用冒泡排序算法对字符串数组进行排序的示例代码:
def bubble_sort_str(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already sorted
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 = ["banana", "apple", "orange", "peach"]
bubble_sort_str(arr)
print("排序后的字符串数组为:")
for i in range(len(arr)):
print("%s" %arr[i])
执行结果如下:
排序后的字符串数组为:
apple
banana
orange
peach
结语
冒泡排序算法虽然简单,但是在同等数据规模下,冒泡排序的算法复杂度较高,因此在处理大量数据时,一般不使用冒泡排序算法。