二分法前提:数组必须是有序的
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; } }