数列排序
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
1 import java.util.*; 2 3 public class Main{ 4 public static void main(String[] args) { 5 Scanner scanner = new Scanner(System.in); 6 int n = scanner.nextInt(); 7 int[] arr = new int[n]; 8 for (int i = 0; i < arr.length; i++) {//存数 9 arr[i] = scanner.nextInt(); 10 } 11 //排列 12 //冒泡 13 for (int m = 0; m < arr.length; m++) { 14 for (int j = 1; j < arr.length; j++) { 15 if (arr[j-1] > arr[j]) { 16 int temporary = arr[j]; 17 arr[j] = arr[j-1]; 18 arr[j-1] = temporary; 19 } 20 } 21 } 22 23 for (int i = 0; i < arr.length; i++) { 24 System.out.print(arr[i]+" "); 25 } 26 } 27 }
第一次提交时我犯了一个错误,将输出语句写道了排序的最外层循环的里面导致错误
for (int m = 0; m < arr.length; m++) { for (int j = 1; j < arr.length; j++) { if (arr[j-1] > arr[j]) { int temporary = arr[j]; arr[j] = arr[j-1]; arr[j-1] = temporary; } }
System.out.print(arr[i]+" ");
}
这里的循环是从前向后比较的,每一次if后将较大的数字往后放,此时一轮for循环后是将数列中最大的数字放在了最后,第一位并没有排好。
如果要求输出从大到小的话,此时可以在每次内层for循环完之后输出第arr.length-m个的值
调用JAVA工具类
Arrays.sort(arr); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); }
浙公网安备 33010602011771号