冒泡排序详解链接
-
冒泡排序和冒泡排序改进算法
public class Sort {
/**
* 冒泡排序
*/
void bubbleSort(int arr[],int len){
int i,j,temp,c1=0,c2=0;
for(i=0;i<len-1;i++){
for(j=len-1;j>i;j--){
c1++;
if(arr[j]<arr[j-1]){
temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
c2++;
}
}
}
System.out.println("比较"+c1+"次,"+"移动"+c2+"次");
}
/**
* 冒泡排序改进
*/
void bubbleSort2(int arr[],int len){
int i,j,temp,c1=0,c2=0;
boolean flag=true;
for(i=0;i<len-1 && flag;i++){
flag=false;
for(j=len-1;j>i;j--){
c1++;
if(arr[j]<arr[j-1]){
c2++;
temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
flag=true;
}
}
}
System.out.println("比较"+c1+"次,"+"移动"+c2+"次");
}
}
-
测试类
public class Test {
public static void main(String[] args) {
int[] arr=new int[]{5, 2, 6, 9, 3, 0, 1, 7, 4, 8};
Sort s=new Sort();
// s.bubbleSort(arr,arr.length);//比较45次,移动20次
// s.bubbleSort2(arr,arr.length);//比较42次,移动20次
for(int k=0;k<arr.length;k++){
System.out.print(arr[k]);
}
System.out.println();
}
}
s.bubbleSort(arr,arr.length);//比较45次,移动20次
s.bubbleSort2(arr,arr.length);//比较42次,移动20次
以上俩句互相比较,发现改进后,比较的次数变少了,效率提高。