Fork me on GitHub

java 冒泡排序

Posted on 2019-07-24 19:15  攀一座山  阅读(115)  评论(0)    收藏  举报
 1 public static void main(String[] args) {
 2         int[] arr = new int[]{5, 4, 8, 7, 3, 9, 1};
 3         for (int j=0;j<arr.length-1;j++) {
 4             for (int i = 0; i < arr.length - 1-j; i++) {
 5                 if (arr[i] < arr[i + 1]) {
 6                     int temp = arr[i];
 7                     arr[i] = arr[i + 1];
 8                     arr[i + 1] = temp;
 9                 }
10             }
11         }
12             for (int i = 0; i < arr.length; i++) {
13             System.out.print(arr[i]);
14            }
15      }
16 }   

如果需要排序的数字是有序的,为了免去不必要的循环,优化后是:

 1 public static void main(String[] args) {
 2         int[] arr = new int[]{5, 4,  3,  1};
 3         boolean tag=false;
 4         for (int j=0;j<arr.length-1;j++) {
 5             tag=false;
 6             for (int i = 0; i < arr.length - 1-j; i++) {
 7                 if (arr[i] < arr[i + 1]) {
 8                     tag=true;
 9                     int temp = arr[i];
10                     arr[i] = arr[i + 1];
11                     arr[i + 1] = temp;
12                 }
13             }if (tag=false){
14                 return;
15             }
16         }for (int i = 0; i < arr.length; i++) {
17             System.out.print(arr[i]);
18         }
19     }
20 }

此时运行不会进行多余循环。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3