二分法前提:数组必须是有序的

public class BubbleSortTest {

    public static void main(String[] args) {
        int[] arr = {5, 11, 62, 45, 12, 15, 25, 11, 16, 18, 17, 19, 1, 3};
        int[] arr1 = positiveBubbleSort(arr);
        println(arr1);
        int[] arr2 = reverseBubbleSort(arr);
        println(arr2);

        int[] a = {50, 111, 62, 4115, 12, 15, 25, 11, 16, 18, 17, 19, 1, 3};
        int[] arr3 = bubbleSort(a);
        println(arr3);

    }

    private static void println(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "  ");
        }
        System.out.println();
    }

    /**
     * 冒泡排序 倒序
     * 
     * @param arr
     *            需要排序的数组
     * @return 排序后的数组
     */
    private static int[] reverseBubbleSort(int[] arr) {

        int count = arr.length - 1;
        while (count > 1) {
            for (int i = 0; i < count; i++) {
                if (arr[i] < arr[i + 1]) {
                    // int recordNum = 0;
                    // recordNum = arr[i];
                    // arr[i] = arr[i + 1];
                    // arr[i + 1] = recordNum;
                    arr[i] = arr[i] ^ arr[i + 1];
                    arr[i + 1] = arr[i] ^ arr[i + 1];
                    arr[i] = arr[i] ^ arr[i + 1];
                }
            }
            count--;
        }
        return arr;
    }

    /**
     * 冒泡排序 正序
     * 
     * @param arr
     *            需要排序的数组
     * @return 排序后的数组
     */
    private static int[] positiveBubbleSort(int[] arr) {

        int count = arr.length - 1;
        while (count > 1) {
            for (int i = 0; i < count; i++) {
                if (arr[i] > arr[i + 1]) {
                    // int recordNum = 0;
                    // recordNum = arr[i];
                    // arr[i] = arr[i + 1];
                    // arr[i + 1] = recordNum;
                    arr[i] = arr[i] ^ arr[i + 1];
                    arr[i + 1] = arr[i] ^ arr[i + 1];
                    arr[i] = arr[i] ^ arr[i + 1];
                }
            }
            count--;
        }
        return arr;
    }

  // 双重for循环
private static int[] bubbleSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { arr[j] = arr[j] ^ arr[j + 1]; arr[j + 1] = arr[j] ^ arr[j + 1]; arr[j] = arr[j] ^ arr[j + 1]; } } } return arr; } }