• 冒泡排序


    思路:不断的将相邻的两个数进行比较,大的数(或小的)往后放(冒泡)。

    通过相邻数据的交换来达到排序的目的。

    附上代码:

    package cn.qujianlei.easy;
    
    public class BubbleSortDemo {
        public static void bubbleSort(int...a){
            for(int i = 0;i<a.length-1;i++){
                for(int j=0;j<a.length-1-i;j++){
                    if(a[j]>a[j+1]){
                        a[j]=a[j]^a[j+1];
                        a[j+1]=a[j]^a[j+1];
                        a[j]=a[j]^a[j+1];
                    }
                    System.out.print("  第"+(i+1)+"步中的第("+(j+1)+")分步:");
                    for(int k=0;k<a.length;k++){
                        System.out.print(" "+a[k]);
                    }
                    System.out.println();
                }
                System.out.print("第"+(i+1)+"步排序结果:");
                for(int k=0;k<a.length;k++){
                    System.out.print(" "+a[k]);
                }
                System.out.println();
            }
        }
        public static void main(String[] args) {
            int []shuzu={26,13,8,4,1};
            int i;
            System.out.println("排序前的数组为:");
            for(i=0;i<shuzu.length;i++){
                System.out.print(shuzu[i]+" ");
            }
            System.out.println();
            bubbleSort(shuzu);
            System.out.println("排序后的数组为:");
            for(i=0;i<shuzu.length;i++){
                System.out.print(shuzu[i]+" ");
            }
            System.out.println();
        }
    }

    运行结果:(括号里的数表示内层循环,括号外表示外层循环)

    排序前的数组为:
    26 13 8 4 1
    第0步中的第(0)分步: 13 26 8 4 1
    第0步中的第(1)分步: 13 8 26 4 1
    第0步中的第(2)分步: 13 8 4 26 1
    第0步中的第(3)分步: 13 8 4 1 26
    第0步排序结果: 13 8 4 1 26
    第1步中的第(0)分步: 8 13 4 1 26
    第1步中的第(1)分步: 8 4 13 1 26
    第1步中的第(2)分步: 8 4 1 13 26
    第1步排序结果: 8 4 1 13 26
    第2步中的第(0)分步: 4 8 1 13 26
    第2步中的第(1)分步: 4 1 8 13 26
    第2步排序结果: 4 1 8 13 26
    第3步中的第(0)分步: 1 4 8 13 26
    第3步排序结果: 1 4 8 13 26
    排序后的数组为:
    1 4 8 13 26

    ---------------------------------------------------

    附上图解:

    注:后面的几步中的分步较少并不是因为没有进行比较,而是因为比较后不满足if语句(前面大于后面),所以没有交换(输出).

    冒泡排序思路简单,但是效率低。

  • 相关阅读:
    Class.getSimpleName()的作用
    win7下制作ubuntu系统安装启动盘和U盘安装ubuntu全过程
    奈奎斯特三大准则
    [转]OFDM中保护间隔和循环前缀抵抗ISI和ICI
    频偏
    移动通信里面,OFDM技术所说的“载波相互正交”是什么意思?
    虚拟盘符映射
    npm 安装与常用命令
    ASP.NET WebAPI HTTPS
    记录下自己写的gulp打包脚本
  • 原文地址:https://www.cnblogs.com/qjlbky/p/6127511.html
Copyright © 2020-2023  润新知