08 冒泡排序

冒泡排序

image

代码

package com.zhan.base04Array;

public class Test08 {

    public static void main(String[] args) {
        int[] a={1,5,3,8,6};
        sort(a);

    }

    /* 冒泡排序
    1.比较数组中相邻的两个因素的大小,如果不相等(看情况),则交换顺序
    2.每一次比较,都会产生 最大或者最小 的一个数字  (内循环)
    3.下一轮循环可以少一次排序
    4. 依次循环,直到结束
     */
    public static void sort(int[] a){

        boolean flag=false;   // 算法的优化

        for (int i = 0,k=a.length-1; i < a.length-1; i++,k--) {
            // 外循环决定每一次内循环后选出最大或者最小值的轮数  执行 a.length-1 次,下一次循环可少一次排序
            for (int j = 0; j <k ; j++) {   //内循环决定排序   每一次外循环后,内循环都会减少一次排序
                if (a[j]>a[j+1]){     // 升序
                    int temp;
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                    flag=true;
                    // 如果if语句没有被执行,那么flag==false,则说明原本的顺序就已经排好了,就可以跳出循环,节省资源
                }
            }
            if (flag==false)  break;
        }



        /*    狂神讲的 ,都一样,使得内循环每次排序的次数减1即可
                for (int i = 0; i < a.length-1; i++) {
            for (int j = 0; j < a.length-1-i; j++) {

            }
        }
         */


        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+" ");
        }
        System.out.println();
    }


}
posted @   被占用的小海海  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示