冒泡排序

58 阅读1分钟
public class BubbleSort {
    public static void sort(int[] nums) {
        if (nums == null || nums.length < 2) {
            return;
        }
        for (int i = 0; i < nums.length - 1; i++) {
            for (int j = 0; j < nums.length - i - 1; j++) {
                if (nums[j] > nums[j + 1]) {
                    swap(nums, j, j + 1);
                }
            }
        }
    }

    private static void swap(int[] nums, int n1, int n2) {
        if (n1 >= nums.length || n2 >= nums.length) {
            throw new RuntimeException("n1 or n2 illegal");
        }
        int temp = nums[n1];
        nums[n1] = nums[n2];
        nums[n2] = temp;
    }
}
public class BubbleSort2 {
    public static void sort(int[] nums) {
        if (nums == null || nums.length < 2) {
            return;
        }
        boolean swapped = false;
        for (int i = 0; i < nums.length - 1; i++) {
            swapped = false;
            for (int j = 0; j < nums.length - i - 1; j++) {
                if (nums[j] > nums[j + 1]) {
                    swap(nums, j, j + 1);
                    swapped = true;
                }
            }
            if (!swapped) {
                return;
            }
        }
    }

    private static void swap(int[] nums, int n1, int n2) {
        if (n1 >= nums.length || n2 >= nums.length) {
            throw new RuntimeException("n1 or n2 illegal");
        }
        int temp = nums[n1];
        nums[n1] = nums[n2];
        nums[n2] = temp;
    }
}