【问题标题】:Java method that prints the top 20% of values from a sorted copy of an array从数组的排序副本中打印前 20% 值的 Java 方法
【发布时间】:2014-03-16 03:42:03
【问题描述】:

这是我到目前为止的代码。我什至不确定我是否正确创建了复制的排序数组。整个 80% 的想法让我感到困惑,所以我不知道如何完成这段代码。任何想法都会很有帮助。

public static int top_20(int[]arr, int size){
     Arrays.sort(arr);
     int[] sorted = new int[size];
     for(int i = 0; i < size; i++){
         sorted[i] = arr[i];
     }
}

【问题讨论】:

  • for(int i = 0; i &lt; size * 20 / 100; i++){ 似乎很合乎逻辑。将其更改为 20 或 80;目前尚不清楚您真正想要的是什么。
  • 我的回答对你有帮助吗?

标签: java arrays percentage percentile


【解决方案1】:

您只需要正确设置for 循环。如果是前 20%,则类似于

for (int i = (int) (size * 0.8); i < size; i++)

您还可以使用arr.length 来确定数组的大小。第一部分size * 0.8是确定,从哪里开始,(int)去掉小数部分,得到int,可以作为索引。最后,你想上size,(或arr.length)。这将打印出数组中前 20% 的元素,四舍五入会导致一些小错误。

【讨论】:

    【解决方案2】:
    public static int[] top_20(int[] arr){
         Arrays.sort(arr);
    
         int size = (int)(arr.length * 0.2); // size is 20% of array
         int start = (int)(arr.length * 0.8); // start at the 80th percentile
    
         int[] top20 = new int[size + 1];
    
         for(int i = start; i < arr.length; i++){
             top20[i - start] = arr[i];
         }
    
         return top20;
    }
    
    public static void main(String[] args) {
    
        int[] x = {92,92,93,94,98,72,75,79,80}; // maybe a class' marks
    
        System.out.println(Arrays.toString(top_20(x))); // [94, 98]
    }
    

    【讨论】:

      【解决方案3】:

      从头开始。将问题陈述分解成更小的部分,然后解决它们。

      1. 如何计算百分比?应用这些知识来计算数组的 20% 有多少。

      2. 给定这个数字,您需要什么范围的数组索引?

      3. 如何打印数字?

      4. 如何打印一系列数字?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-19
        • 2018-05-01
        • 1970-01-01
        • 2016-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-23
        相关资源
        最近更新 更多