java冒泡排序的三种实现方法

第一种

通过简单的比较相邻的元素,如果他们的顺序是错误的,则交换它们的位置。
重复这个步骤,直到没有更多要交换的元素为止。
j变量代表未排序数组范围的右边界,j以后的已经排序

public static void bubble(int[] nums,int j){
        if(j == 0){
            return;
        }
        for (int i = 0; i < j; i++) {
            if(nums[i] > nums[i+1]){
                int a = nums[i];
                nums[i] = nums[i+1];
                nums[i+1]= a;
            }
        }
        bubble(nums,j-1);
    }

第二种

这里的x变量其实是一个分界的变量
x的左边未排序 右边则不需要排序
从而提高排序效率

    public static void bubble_plus(int[] nums,int j){
        if(j == 0){
            return;
        }
        int x = 0;
        for (int i = 0; i < j; i++) {
            if(nums[i] > nums[i+1]){
                int a = nums[i];
                nums[i] = nums[i+1];
                nums[i+1]= a;
                x = i;
            }
        }
        bubble_plus(nums,x);
    }

第三种

这种其实是对第一种的补充
x变量代表未排序变量的左边界
x之前以及j之后都已经排序
因此不需要再排序,提高效率

public static void bubble_pro(int[] nums,int j,int x){
        if(j <= x){
            return;
        }
        for (int i = 0; i < j; i++) {
            if(nums[i] > nums[i+1]){
                int a = nums[i];
                nums[i] = nums[i+1];
                nums[i+1]= a;
            }
        }
        bubble_pro(nums,j-1,x+1);
    }

posted @ 2024-01-28 22:43  XFS小风  阅读(58)  评论(0)    收藏  举报