图示
原理
Code
1 | 1. 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。 |
实现
java
1 | public static void _从左往右找大数往右冒(Comparable a[]){ |
性能
如6个数: [6,5,4,3,2,1]
需要比较的次数
Code
1 | 第一轮的6需要比较5次 |
同理需要交换的次数
Code
1 | 第一轮的6需要交换5次 |
N个数需要比较总次数:(N-1)+(N-2)+(N-3)+ … + 2 + 1 = ((N-1)+1) * (N-1)/2 = N^2/2 - N/2
N个数需要交换总次数:(N-1)+(N-2)+(N-3)+ … + 2 + 1 = ((N-1)+1) * (N-1)/2 = N^2/2 - N/2
总的执行次数为:N^2/2 - N/2 + N^2/2 - N/2 = N^2 - N
根据大O记法,时间复杂度为 O(N^2)
稳定性
稳定, 两个相同元素, 等于时候不交换, 这两个相同元素的顺序还是不变的。


