1. 首页
  2. 软件开发
  3. 数组的冒泡排序

数组的冒泡排序

  • 发布于 2024-09-21
  • 0 次阅读

冒泡排序的思想:

一组数据,从前到后两两之间比大小,将大的数像水中的泡泡上浮一样往后传。

例子:5 1 3 =>1 5 3=>1 3 5

代码主体:

import java.util.Scanner;

public class maopaopaixv_fengzhuang {
    public static void main(String[] args) {
       //冒泡法从小到大排序数组
        //定义数组
        int[] arr = new int[100];
        //定义数组需要的长度
        int len = 5;
        //封装
        //输入
        maopaopaixv_fengzhuang.input(arr, len);
        //排序
        maopaopaixv_fengzhuang.paixv(arr, len);
        //输出
        maopaopaixv_fengzhuang.output(arr, len);
    }
    //输入
    public static void input(int[] a, int chang) {
        //抓取命令
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入"+chang+"个数字:");
        for (int i = 0; i < chang; i++) {
            a[i] = scanner.nextInt();
        }

    }
    //排序
    public static void paixv(int[] a, int chang) {
       int r;
        /**第一个for是控制总循环的次数
         * 确保循环要从头开始多少次
         * 每次循环都要确保将最大的数放到最后一位,第二大的数放到n-1位,以此类推
         * 当到最后一位的时候不用跟自己比,所以是数组长-1
         */
        for (int i = 0; i < chang-1; i++) {
            //第二个for是将数字第j与j+1比大小,前大后小的互换位置
            //确保每次循环都将本次循环最大的数字放到最后一位
            //因为每次循环完后面沉淀到最后的数字肯定是最大的,没必要再进入循环比大小
            //所以每次进入第二个for就会少比对一次,因此比对次数<数组长-1-i
            for (int j = 0; j < chang - 1 - i; j++) {
             //当比对的数是前大后小时,两两交换
                if (a[j]>a[j+1]){
                    r=a[j];
                    a[j]=a[j+1];
                    a[j+1]=r;
                }
            }
        }
    }
    //输出
    public static void output(int[] a, int chang) {
       //for循环输出数组
        for (int i = 0; i < chang; i++) {
            System.out.print(" " + a[i]);

        }
    }

}

输出结果:

输入5个数字:
85 97 41 52 5
5 41 52 85 97
Process finished with exit code 0

原文链接: https://blog.csdn.net/daibadetianshi/article/details/136763081