遍历序列,当前元素比前一元素小时,交换他们,这样一次遍历之后,最大元素出现在序列尾端,遍历n次之后序列即为有序序列。
1 BUBBLE_SORT(A) 2 n = length of A 3 end = n-2 4 5 while end > 0 6 do 7 pos = -1 //最后一次交换的位置 8 9 for i = 0, end 10 do 11 if A[i] > A[i+1] then 12 swap A[i] A[i+1] 13 pos = i 14 end = pos
平均:O(n^2)
最差:O(n^2)
最优:O(n)
冒泡排序的性能表现较差,虽然与插入排序相比时间复杂度均为O(n^2),但其在实现过程中含有大量的数据移动操作,因此其性能表现甚至无法和插入排序相比。但在对基本有序的序列进行排序时,其性能表现与插入排序相仿。
stl中貌似没有使用冒泡算法。
原文地址:http://www.cnblogs.com/stormli/p/bubble_sort.html