冒泡排序的基本算法
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+"轮");
}
}