1 import java.util.Scanner; 2 public class test{ 3 public static void main(String[] args) { 4 //冒泡排序 5 //1.每次从头开始比较,大的排后面,要n - 1轮排序 6 //2.设当前最后面排列好的数为i个,每次要比较的数为n - 1 -i,因为这后面的i个是每一轮比较中最大的,是排列好的 7 //3.由于有时不用进行n - 1轮排序,就已经排列好了,所以要进行算法优化 8 //4.用一个标志变量标志,如果要进行交换,那么改变标志变量的值。不然则是全部排列好 9 //让用户输入要操作的数组,用length接受长度,然后接受赋值 10 System.out.println("请输入你想要的数组长度"); 11 Scanner scan = new Scanner(System.in); 12 int length = scan.nextInt(); 13 int[] arr = new int[length]; 14 System.out.println("请依次为数组元素赋值(整数)"); 15 for (int round = 0; round <= length - 1;round++){ 16 System.out.print("\narr[" + round + "] = "); 17 arr[round] = scan.nextInt(); 18 } 19 int sign = 0; 20 for (int round = 0;round <= arr.length - 2;round++){ 21 //每轮排完,若还没结束循环,证明sign的值改变,重置sign 22 sign = 0; 23 for(int index = 0;index <= arr.length - 2 - round;index++){ 24 int temp = 0; 25 //比较 26 if(arr[index] > arr[index + 1]){ 27 temp = arr[index]; 28 arr[index] = arr[index + 1]; 29 arr[index + 1] = temp; 30 sign = 1; 31 } 32 } 33 if (sign == 0)break;//sign没变证明排列好 34 } 35 System.out.println("\n====数组排序成功====\n\n排列好的数组元素依次为:\n"); 36 for(int i = 0; i <= arr.length - 1;i++ ) 37 System.out.print(arr[i] + " "); 38 System.out.print("\n"); 39 } 40 }