为什么Arrays.sort(arr)返回0值

时间:2016-11-06 13:45:35

标签: java arrays sorting

import java.util.*;
import java.util.Arrays;
class stoner {

    public static void main(String[] args) 
    {
        Scanner ob = new Scanner(System.in);
        int t = ob.nextInt();
        int arr[] = new int[501];
        while(t-- > 0)
        {
            int s = ob.nextInt();
            for(int i = 0;i<s;i++)
            {
                arr[i] = ob.nextInt();
                Arrays.sort(arr);
            }
            for(int i = 0;i<s;i++)
                System.out.print(arr[i]+" ");
        }
    }
}

INPUT: 1(测试用例) 5(阵列大小) 5 2 3 1 4(数组元素)

输出: 0 0 0 0 0

为什么即使在使用这种排序功能之后我们也会得到0作为答案???

2 个答案:

答案 0 :(得分:2)

如果你只填充数组的5个元素(你输入5作为“数组的大小”),默认情况下,数组的大多数501元素将包含0,并且在对数组进行排序后,0到达之前您输入的正值。

此外,在将所有输入分配到数组后,您应该对数组进行一次排序。

    Scanner ob = new Scanner(System.in);
    int t = ob.nextInt();
    while(t-- > 0)
    {
        int s = ob.nextInt();
        int[] arr = new int[s]; // give the array the correct length
        for(int i = 0; i<s; i++)
        {
            arr[i] = ob.nextInt();
        }
        Arrays.sort(arr); // sort after reading the inputs
        for(int i = 0;i<s;i++)
            System.out.print(arr[i]+" ");
    }

答案 1 :(得分:0)

你创建了501个元素的int数组 - 全部用0初始化(因为它是int类型)。

接下来,在数组的beginig上放置5个随机整数。所以你在其中有496个零 - 在Arrays.sort(arr)之后,你的数组的前五个元素(你在标准输出上打印)将是零。您应该在数组末尾查找元素,或者使用new int[s]初始化数组,当然是在知道s的那一刻。