吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1310|回复: 18
收起左侧

[已解决] JAVA之冒泡排序????

[复制链接]
sadfoo2019 发表于 2021-3-11 03:55
本帖最后由 sadfoo2019 于 2021-3-11 11:55 编辑

改进:如果一次都没交换就提前终止程序,并输出提示?
[Java] 纯文本查看 复制代码
public class BubbleSort {

        public static void main(String[] args) {
                // 定义数组
                int[] arr = { 22, 6, 99, 9, 66, -11, -99, 0 };
                // 用于辅助交换的变量
                int temp = 0;
                for (int i = 0; i < arr.length - 1; i++) { // 外循环:数组长度
                        for (int j = 0; j < arr.length - i - 1; j++) {
                                if (arr[j] > arr[j + 1]) {
                                        // 如果条件成立就把第一个数赋值给中间变量
                                        temp = arr[j];
                                        // 把第二个数赋值给第一个数
                                        arr[j] = arr[j + 1];
                                        // 把第一数赋值给第二数
                                        arr[j + 1] = temp;
                                }
                                /*
                                 * 如果一次都没交换就提前终止程序,并输出提示语
                                 */

                        }
                        System.out.println("\n第" + (i + 1) + "轮交换 ***************");
                        // 遍历获得上面排序的数
                        for (int j = 0; j < arr.length; j++) {
                                System.out.print(arr[j] + "\t");

                        }
                }

        }

}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
chensweet + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
薇尔莉特 发表于 2021-3-11 07:11
提示: 作者被禁止或删除 内容自动屏蔽
云在天 发表于 2021-3-11 07:26
public class BubbleSort {

        public static void main(String[] args) {
                // 定义数组
                int[] arr = { 22, 6, 99, 9, 66, -11, -99, 0 };
                // 用于辅助交换的变量
                int temp = 0;

                for (int i = 0; i < arr.length - 1; i++) { // 外循环:数组长度
                                                int flag=0;
                        for (int j = 0; j < arr.length - i - 1; j++) {
                                if (arr[j] > arr[j + 1]) {
                                        // 如果条件成立就把第一个数赋值给中间变量
                                        temp = arr[j];
                                        // 把第二个数赋值给第一个数
                                        arr[j] = arr[j + 1];
                                        // 把第一数赋值给第二数
                                        arr[j + 1] = temp;
                                                                                flag=1;
                                }
                                /*
                                 * 如果一次都没交换就提前终止程序,并输出提示语
                                 */
                                                                 if(flag==1)
                                                                     break;

                        }
                        System.out.println("\n第" + (i + 1) + "轮交换 ***************");
                        // 遍历获得上面排序的数
                        for (int j = 0; j < arr.length; j++) {
                                System.out.print(arr[j] + "\t");

                        }
                }

        }

}
向北行 发表于 2021-3-11 07:40
加个标记,如果标记没变,说明没有交换,然后就退出
lenmou 发表于 2021-3-11 08:02
你这个如果数组里面有两个一样的数,那会不会提前终止?
肥猫警长 发表于 2021-3-11 08:26
记住口诀,外层循环n-1,内层循环n-1-i
张海洋 发表于 2021-3-11 08:53
okok,记住了
fht000 发表于 2021-3-11 08:57
[Java] 纯文本查看 复制代码
 int[] arr = { 22, 6, 99, 9, 66, -11, -99, 0 };
        Arrays.sort(arr);
        Arrays.stream(arr).forEach(value -> System.out.println(value));
lili2312280 发表于 2021-3-11 08:59
学习学习学习
xdfg 发表于 2021-3-11 09:06
我来复习一下!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-17 21:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表