冒泡排序(Bubble Sort)
正向排序--从前往后,由小到大
逆向排序--从前往后,由大到小(array[j]<array[j+1])
public class BubbleSort {
public static int[] sort_asc(int[] array){
for(int i=1; i<array.length-1; i++){
boolean flag = false;
for(int j=0; j<array.length-i; j++){
if(array[j]>array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if(flag){
System.out.println("第"+i+"轮排序结果为:");
display(array);
}
}
return array;
}
private static void display(int[] array) {
for(int i = 0 ; i < array.length ; i++){
System.out.print(array[i]+" ");
}
System.out.println();
}
public static void main(String[] args){
int[] array = {7,4,1,3,9,5,2,8,6};
System.out.println("未排序数组顺序为:");
display(array);
System.out.println("-----------------------");
array = sort_asc(array);
System.out.println("-----------------------");
System.out.println("经过冒泡排序后(asc)的数组顺序为:");
display(array);
}
}
正向排序--从后往前,由小到大
逆向排序--从后往前,由大到小(array[j]>array[j-1])
public class BubbleSort {
public static int[] sort_desc(int[] array){
for(int i=1; i<array.length-1; i++){
boolean flag = false;
for(int j=array.length-1; j>i-1; j--){
if(array[j]<array[j-1]){
int temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
flag = true;
}
}
if(flag){
System.out.println("第"+i+"轮排序结果为:");
display(array);
}
}
return array;
}
private static void display(int[] array) {
for(int i = 0 ; i < array.length ; i++){
System.out.print(array[i]+" ");
}
System.out.println();
}
public static void main(String[] args){
int[] array = {7,4,1,3,9,5,2,8,6};
System.out.println("未排序数组顺序为:");
display(array);
System.out.println("-----------------------");
array = sort_desc(array);
System.out.println("-----------------------");
System.out.println("经过冒泡排序后(desc)的数组顺序为:");
display(array);
}
}
网友评论