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 }
此时运行不会进行多余循环。