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 }