数列排序

给定一个长度为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]+" ");
}

 

posted @ 2023-03-29 02:04  帆のBlog  阅读(31)  评论(0)    收藏  举报