假设一维数组的长度为n,需要进行n-1轮排序(循环次数为n-1次)
每次循环。从左到右,将相邻的两个元素进行比较,如果前面的比后面的小,交换两个元素的值,第i次循环(i从1开始记),需要进行n-i次比较(可以使用子循环来实现)
1 package com.wh.array; 2 3 import java.util.Arrays; 4 5 public class Demo { 6 public static void main(String[] args) { 7 int[] arr = new int[10]; 8 for (int i=0; i < arr.length; i++) { 9 arr[i] = (int) (Math.random() * 100); 10 } 11 System.out.println("排序前:"+Arrays.toString(arr)); 12 13 for(int i=0;i<arr.length;i++){ //趟数 14 15 for(int j=0;j<arr.length-i-1;j++){ //次数 16 17 if(arr[j]>arr[j+1]){ 18 19 int temp=arr[j]; 20 21 arr[j]=arr[j+1]; 22 23 arr[j+1]=temp; 24 25 } 26 27 } 28 29 } 30 31 System.out.println("排序后:"+Arrays.toString(arr)); 32 } 33 }
运行结果: 排序前:[93, 67, 61, 0, 41, 95, 86, 8, 23, 81] 排序后:[0, 8, 23, 41, 61, 67, 81, 86, 93, 95]