冒泡排序

public class Maopao {

    public static void main(String[] args) {
        int arr[] = {10, 50, 3, 7, 14};
        int len = arr.length;

        for(int i = 0;i < len -1;i++) {
            for(int j = 0;j < len - 1 - i;j++) {
                if(arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;

                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}


public class Maopao {

    public static void main(String[] args) {
        int arr[] = {10, 50, 3, 7, 14};
        int len = arr.length;

        int count = 0;

        for(int i = 0;i < len -1;i++) {
//            boolean ifTrans = false;
            System.out.println("============第" + (i+1) + "次比较============");
            for(int j = 0;j < len - 1 - i;j++) {
                System.out.print("比较: " + arr[j] + " 和 " + arr[j + 1]);
                if(arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
//                    ifTrans = true;
                    System.out.print("\t 比较结果: 交换");
                    System.out.print("\t" + Arrays.toString(arr));

                } else {
                    System.out.print("\t 比较结果: 不交换");
                    System.out.print("\t" + Arrays.toString(arr));
                }

                System.out.println();
                count++;
            }
            System.out.println();
//            if(!ifTrans) {
//                break;
//            }
        }
        System.out.println(count);
        System.out.println(Arrays.toString(arr));
    }
}
============1次比较============
比较: 1050	 比较结果: 不交换	[10, 50, 3, 7, 14]
比较: 503	 比较结果: 交换	[10, 3, 50, 7, 14]
比较: 507	 比较结果: 交换	[10, 3, 7, 50, 14]
比较: 5014	 比较结果: 交换	[10, 3, 7, 14, 50]

============2次比较============
比较: 103	 比较结果: 交换	[3, 10, 7, 14, 50]
比较: 107	 比较结果: 交换	[3, 7, 10, 14, 50]
比较: 1014	 比较结果: 不交换	[3, 7, 10, 14, 50]

============3次比较============
比较: 37	 比较结果: 不交换	[3, 7, 10, 14, 50]
比较: 710	 比较结果: 不交换	[3, 7, 10, 14, 50]

============4次比较============
比较: 37	 比较结果: 不交换	[3, 7, 10, 14, 50]

10
[3, 7, 10, 14, 50]

优化:如果在一次循环中没有发生交换位置,则可以提前结束

============1次比较============
比较: 1050	 比较结果: 不交换	[10, 50, 3, 7, 14]
比较: 503	 比较结果: 交换	[10, 3, 50, 7, 14]
比较: 507	 比较结果: 交换	[10, 3, 7, 50, 14]
比较: 5014	 比较结果: 交换	[10, 3, 7, 14, 50]

============2次比较============
比较: 103	 比较结果: 交换	[3, 10, 7, 14, 50]
比较: 107	 比较结果: 交换	[3, 7, 10, 14, 50]
比较: 1014	 比较结果: 不交换	[3, 7, 10, 14, 50]

============3次比较============
比较: 37	 比较结果: 不交换	[3, 7, 10, 14, 50]
比较: 710	 比较结果: 不交换	[3, 7, 10, 14, 50]

9
[3, 7, 10, 14, 50]

你可能感兴趣的:(algorithm)