算法思想:
遍历序列,当前元素比前一元素小时,交换他们,这样一次遍历之后,最大元素出现在序列尾端,遍历n次之后序列即为有序序列。
算法实现:
1 void bubble_sort(int A[],int n ) 2 { 3 int end = n-2; 4 while ( end > 0 ) 5 { 6 int pos = -1; 7 for( int i = 0 ; i <= end; i ++ ) 8 { 9 if( A[i] > A[i+1] ) 10 { 11 swap(A[i],A[i+1]); 12 pos = i; 13 } 14 } 15 end = pos; 16 } 17 }
算法性能:
平均:O(n2)
最差:O(n2)
最优:O(n)
使用场景:
冒泡排序的性能表现较差,虽然与插入排序相比时间复杂度均为O(n2),但其在实现过程中含有大量的数据比较、移动操作,因此其性能表现甚至无法和插入排序相比。但在对基本有序的序列进行排序时,其性能尚可。