Discuss / Java / 数组从大到小排序,冒泡优化版

数组从大到小排序,冒泡优化版

Topic source

import java.util.Arrays;

public class Main {

public static void main(String[] args) {

int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };

// 12 28 73 65 18 89 50 8 36 96

// 排序前:

        System.out.println(Arrays.toString(ns));

// 外循环

boolean flag = false;

for (int i = 0; i < ns.length - 1; i++) {

flag = false;

for (int j = 0; j < ns.length - i-1; j++) {

if (ns[j] > ns[j + 1]) {

ns[j] = ns[j] + ns[j + 1];

ns[j + 1] = ns[j] - ns[j + 1];

ns[j] = ns[j] - ns[j + 1];

flag = true;

                }

                System.out.format("第 %d 遍第%d 趟结果:", i + 1, j + 1);

for (int count : ns) {

                    System.out.print(count+" ");

                }

                System.out.println("");

            }

            System.out.format("第 %d 遍最终结果:", i + 1);

for (int count : ns) {

                System.out.print(count+" ");

            }

            System.out.println("");

// 如果没有发生元素交换说明排序完成。

if (!flag) {

return;

            }

        }

// 排序后:

        System.out.println(Arrays.toString(ns));

if (Arrays.toString(ns).equals("[96, 89, 73, 65, 50, 36, 28, 18, 12, 8]")) {

            System.out.println("测试成功");

} else {

            System.out.println("测试失败");

        }

    }

}


  • 1

Reply