升序:每轮排序选出最大的一个放到最后
public static void bubblesort(int[] a){
int tmp = 0;
for(int i = 0; i < a.length - 1; i++){
for(int j = 0; j < a.length - 1 - i; j++){
if(a[j] > a[j+1]){
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
}
优化代码:若序列已有序,则中断循环
public static void bubblesort(int[] a){
int tmp = 0;
for(int i = 0; i < a.length - 1; i++){
int flag = 0;
for(int j = 0; j < a.length - 1 - i; j++){
if(a[j] > a[j+1]){
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
flag++;
}
}
if(flag == 0) break; //如果序列已是有序的,跳出循环
}
}
降序:每轮排序将最小值放到最后
public static void bubbledownsort(int[] a){
int tmp = 0;
for(int i = 0; i < a.length - 1; i++){
int flag = 0;
for(int j = 0; j < a.length - i - 1; j++){
if(a[j] < a[j+1]){
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
flag++;
}
}
if(flag == 0) break; //如果序列已是有序的,跳出循环
}
}