Java - 冒泡排序
2018-01-05 本文已影响9人
533e11a308d9
冒泡排序
package com.code.ggsddu;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class BubbleSort {
public static void main(String[] args) {
System.out.print("输入数组长度:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] arr = new int[n];
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(100);
}
System.out.println("排序前:" + Arrays.toString(arr));
System.out.println("--------------------- 排序开始 ---------------------");
// 外层循环:n个元素,循环n-1次,每次循环得到最值,放到数组末位(最值像泡泡一样冒出去)
for (int i = 0; i < arr.length - 1; i++) {
// 内层循环:arr.length-i-1次,对当前无序区间进行排序!
// j的范围很关键,从j<arr.length-i-1可以看出这个范围是在逐步缩小的
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
System.out.println("第 " + (i + 1) + " 次排序:" + Arrays.toString(arr));
}
System.out.println("--------------------- 排序结束 ---------------------");
System.out.println("排序后:" + Arrays.toString(arr));
}
}
控制台打印结果:
输入数组长度:10
排序前:[64, 89, 36, 57, 82, 70, 40, 61, 81, 15]
--------------------- 排序开始 ---------------------
第 1 次排序:[64, 36, 57, 82, 70, 40, 61, 81, 15, 89]
第 2 次排序:[36, 57, 64, 70, 40, 61, 81, 15, 82, 89]
第 3 次排序:[36, 57, 64, 40, 61, 70, 15, 81, 82, 89]
第 4 次排序:[36, 57, 40, 61, 64, 15, 70, 81, 82, 89]
第 5 次排序:[36, 40, 57, 61, 15, 64, 70, 81, 82, 89]
第 6 次排序:[36, 40, 57, 15, 61, 64, 70, 81, 82, 89]
第 7 次排序:[36, 40, 15, 57, 61, 64, 70, 81, 82, 89]
第 8 次排序:[36, 15, 40, 57, 61, 64, 70, 81, 82, 89]
第 9 次排序:[15, 36, 40, 57, 61, 64, 70, 81, 82, 89]
--------------------- 排序结束 ---------------------
排序后:[15, 36, 40, 57, 61, 64, 70, 81, 82, 89]
Process finished with exit code 0