JAVA基础--冒泡排序

冒泡排序(笔试题)

  • 两次循环,外层冒泡轮数,里层依次比较

  • 时间复杂度为O(n2)

  • 过程:

  1. 比较数组中两个相邻的元素,如果第一个元素比第二个大,则交换它们的位置
  2. 每一次比较都会产生一个最大或者最小的数组,下一轮则可以少一个排序
  3. 依次循环,直到结束
public class BubbleSort {
    public static void main(String[] args) {
        //冒泡排序(升序:从小到大)
        int[] nums = {2,4,1,3,5,9,6,7};
        int temp = 0;//临时变量,用于交换
        //输出排序前数组
        System.out.println("排序前数组为:");
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i]+" ");
        }
        //两两比较
        for (int i = 0; i < nums.length-1; i++) {
            for (int j = 0; j < nums.length-1; j++) {
                if(nums[j+1]<nums[j]){
                    //将比较小的数换到前面
                    temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
        }
        //输出排序后数组
        System.out.println();//换行
        System.out.println("排序后数组为:");
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i]+" ");
        }
    }
}

运行结果为:

编写一个冒泡排序的方法

import java.util.Arrays;
public class BubbleSort {
    public static void main(String[] args) {
        int[] nums = {2,4,1,3,5,9,6,7};
        int[] nums_2 = bubSort(nums);//调用方法
        //输出排序后数组
        System.out.println("排序后数组为:");
        System.out.println(Arrays.toString(nums_2));
    }
    //冒泡排序的方法(升序)
    public static int[] bubSort(int[] arr){
        int temp = 0;
        //两两比较
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-1; j++) {
                if(arr[j+1]<arr[j]){
                    //将比较小的数换到前面
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;
    }
}

优化

减少比较次数

import java.util.Arrays;
public class BubbleSort {
    public static void main(String[] args) {
        int[] nums = {2,4,1,3,5,9,6,7};
        int[] nums_2 = bubSort(nums);
        //输出排序后数组
        System.out.println("排序后数组为:");
        System.out.println(Arrays.toString(nums_2));
    }
    //冒泡排序的方法(升序)
    public static int[] bubSort(int[] arr){
        int temp = 0;
        //两两比较
        for (int i = 0; i < arr.length-1; i++) {
            boolean flag = false;//用于标记是否发生了交换
            for (int j = 0; j < arr.length-1; j++) {
                if(arr[j+1]<arr[j]){
                    //将比较小的数换到前面
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                    flag = true;
                }
            }
            if(flag == false){
                //如果没有发生交换则表示已经排序完成,不需要再继续循环比较
                break;
            }
        }
        return arr;
    }
}
posted @   月亮警察  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示