不考虑有序
/**
* 冒泡法排序
*/
import java.util.Arrays;
public class BubbleSort01 {
public static void main(String[] args) {
int arr[] = {1,2,5,3,4};
Sort(arr); //调用Sort函数
}
//排序函数
public static void Sort(int arr[]) {
int len = arr.length;
for(int j=0;j<len-1;j++){
System.out.println("第"+(j+1)+"趟");
for(int i=0;i<len-1-j;i++){
System.out.print("第"+(i+1)+"次");
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
System.out.println(Arrays.toString(arr));
}
}
}
}
输出:
第1趟
第1次[1, 2, 5, 3, 4]
第2次[1, 2, 5, 3, 4]
第3次[1, 2, 3, 5, 4]
第4次[1, 2, 3, 4, 5]
第2趟
第1次[1, 2, 3, 4, 5]
第2次[1, 2, 3, 4, 5]
第3次[1, 2, 3, 4, 5]
第3趟
第1次[1, 2, 3, 4, 5]
第2次[1, 2, 3, 4, 5]
第4趟
第1次[1, 2, 3, 4, 5]
考虑有序
/**
* 冒泡法排序
*/
import java.util.Arrays;
public class BubbleSort02 {
public static void main(String[] args) {
int arr[] = {1,2,5,3,4};
Sort(arr); //调用Sort函数
}
//排序函数
public static void Sort(int arr[]) {
boolean sorted = true;
int len = arr.length;
for(int j=0;j<len-1;j++){
System.out.println("第"+(j+1)+"趟");
sorted = true; //假设有序
for(int i=0;i<len-1-j;i++){
System.out.print("第"+(i+1)+"次");
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
sorted = false; //假设失败
}
System.out.println(Arrays.toString(arr));
}
if(sorted)
break;
}
}
}
输出:
第1趟
第1次[1, 2, 5, 3, 4]
第2次[1, 2, 5, 3, 4]
第3次[1, 2, 3, 5, 4]
第4次[1, 2, 3, 4, 5]
第2趟
第1次[1, 2, 3, 4, 5]
第2次[1, 2, 3, 4, 5]
第3次[1, 2, 3, 4, 5]