冒泡排序(Bubble Sort)是一种简单的排序算法,其工作原理是重复地遍历待排序的列表,
比较每对相邻的元素,如果他们的顺序错误就把他们交换过来。遍历列表的工作是重复地进行直到没有再需要交换,
也就是说该列表已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
以下是一个用Python编写的冒泡排序算法的例子:
pythondef bubble_sort(arr): n = len(arr) # 遍历所有数组元素 for i in range(n): # 最后i个元素已经有序,无需再比较 for j in range(0, n-i-1): # 遍历从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 = " ")
在这段代码中,
外层循环负责遍历整个数组,内层循环则负责每轮的比较和交换。
如果在某次内层循环中没有发生任何交换,那就说明数组已经排序完成,
这时就可以提前结束排序过程,这就是“优化版”的冒泡排序。
冒泡排序的时间复杂度是O(n^2),其中n是数组的长度。
虽然它的效率不如一些更高级的排序算法(如快速排序、归并排序等),
但它的实现简单,对于小规模的数据排序或者要求稳定排序的情况(即排序后相等的元素原有的相对顺序不变),冒泡排序是一个不错的选择。