冒泡排序的基本算法
public class TestBubble {
public static void main(String[] args) {
int [] arr = {45,25,78,99,13,55,65,15};
int temp;
for(int i=0;i<arr.length-1;i++) { //這個循環代表比較幾輪
for(int j=0;j<arr.length-1;j++) { //這個循環代表元素的兩兩對比
if(arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
冒泡排序的優化算法
public class TestBubble2 {
public static void main(String[] args) {
//int [] arr = {45,25,78,99,13,55,65,15};
int [] arr = {1,2,3,4,5};
int temp;
boolean flag;
int count=0;
for(int i=0;i<arr.length-1;i++) {
flag=true;//優化2 默認有序
count++; //優化3 統計比較的論數
for(int j=0;j<arr.length-1-i;j++) { //優化1 無需每輪都比7次
if(arr[j]>arr[j+1]) {
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=false;//數組中的元素無序,發生了交換
}
}
if(flag) {
break; //退出循環,證明數組有序
}
}
System.out.println(Arrays.toString(arr));
System.out.println("一共比較了"+count+"輪");
}
}