07-实现冒泡排序

冒泡排序的实现

  • 冒泡排序比较简单,如下所示

  • import java.util.Arrays;
    import java.util.Random;
    import java.util.Scanner;
    public class BubbleSort {
    public static void main(String[] args) {
    // 随机生成(1-100)的指定长度的数组
    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入指定的数组长度:");
    int[] arr = randomArr(scanner.nextInt());
    System.out.println("源数组: arr = " + Arrays.toString(arr));
    bubbleSort(arr);
    System.out.println("---------------------------------");
    System.out.println("冒泡排序后的数组为:arr = " + Arrays.toString(arr));
    }
    private static void bubbleSort(int[] arr) {
    /*
    冒泡排序原理:
    每一轮排序,从第一个开始,两两比较,大的放后面
    每一次比较结束后,指针往后移动一位
    */
    // 排序的最大轮数为 arr.length - 1,即长度为4的最大排序轮数为3轮
    for (int i = 0; i < arr.length - 1; i++) {
    System.out.println("----------当前为第[" + (i + 1) + "]轮排序----------");
    // 每次比较次数,跟轮数有关,每一轮排序结束后,需要比较的数字都会 -1
    // 又因为第一次比较的次数为 arr.length - 1
    // 所以可以得出规律 每次比较的次数为 arr.length - 1 - i
    int temp = 0; // 用作两两交换
    int times = 0; // 作为记录每轮的中的比较后两数的交换次数,如果该轮比较后两数的交换次数为0,那么此时的数组就已经为升序排序了
    for (int j = 0; j < arr.length - 1 - i; j ++) {
    System.out.println("第[" + (j + 1) + "]次比较中比较的两个数字为:" + arr[j] + "," + arr[j + 1]);
    if (arr[j] > arr[j + 1]) {
    temp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = temp;
    times ++;
    }
    }
    System.out.println("本轮排序结束后的数组为:" + Arrays.toString(arr));
    if (times == 0) {
    return;
    }
    }
    }
    private static int[] randomArr(int length) {
    Random random = new Random();
    System.out.print("请输入数组的长度:");
    int[] arr = new int[length];
    for (int i = 0; i < arr.length; i++) {
    arr[i] = random.nextInt(101) + 1;
    }
    return arr;
    }
    }
posted @   OnlyOnYourself-Lzw  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示