排序算法总结:
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
数组:[8,20,9,1,34,27,1,10]冒泡排序如下:
从8和20开始,它们的关系是对的,后移一位来到20和9,交换得到9和20,依次向后比较,如图所示:
这是一趟比较,最后得到的结果就是最大的数34沉到了数列的末尾。下一趟就可以忽略最后一个数34,只操作前7个数就好了,当一趟冒泡走完,一次都没交换的时候,说明整个数列是有序的,排序完成。
冒泡排序是稳定算法,因为每次交换只交换临近的元素,临近元素相等就不交换,因此相等的数不论距离多远,都没有改变前后的可能性。
Python实现:
def bubbleSort(arr):
l = len(arr)
if l <= 1:
return
exchange = True
end = l
while exchange:
exchange = False
for i in range(end-1):
if arr[i] > arr[i+1]:
arr[i], arr[i+1] = arr[i+1], arr[i]
exchange = True
i += 1
end -= 1