初始数据: 4,8,3,7,10,9,5
第1次交换:4,3,7,8,9,5,10(需要比较6次,将最大的数10沉到最后)
第2次交换:3,4,7,8,5,9,10(需要比较5次,将9沉到后面)
第3次交换:3,4,7,5,8,9,10(需要比较4次,将8沉到后面)
第4次交换:3,4,5,7,8,9,10(需要比较3次,将7沉到后面)
第5次交换:3,4,5,7,8,9,10(需要比较2次,将5沉到后面)
第6次交换:3,4,5,7,8,9,10(需要比较1次,将4沉到后面)
因此我们需要定义两个变量:i,j。
i:控制第几次的交换。
j:数组下标。
代码如下:
import java.util.Arrays;
public class Algorithm {
public static void main(String[] args) {
int []arraylist={3,5,8,10,9,6,7};
bubbleAlgorithm(arraylist);
System.out.println(Arrays.toString(arraylist));
}
public static void bubbleAlgorithm(int []arr){
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int a=0;
a=arr[j];
arr[j]=arr[j+1];
arr[j+1]=a;
}
}
}
}
}
分析:i=0,i<6,j<6(其中arr.length-1-i 是每次的比较次数){j=0,j=1,j=2,j=3,j=4,j=5}
剩下的按同样思路分析。