这是我到目前为止的代码。我甚至不确定我是否正确创建了复制的排序数组。整个80%-percentile认为让我感到困惑,所以我不知道如何完成这段代码。任何想法都会非常有用。
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];
}
}
答案 0 :(得分:0)
您只需正确设置for
周期即可。在前20%的情况下,它会像
for (int i = (int) (size * 0.8); i < size; i++)
您还可以使用arr.length
来确定数组的大小。第一部分size * 0.8
用于确定,从哪里开始,(int)
切断小数部分,以获得int
,可以用作索引。最后,您希望最多size
,(或arr.length
)。这将打印出数组的前20%元素,并且舍入引入了一些小的不准确性。
答案 1 :(得分:0)
从头开始。将问题陈述分解成小块,并解决它们。
你如何计算百分比?应用这些知识来计算有多少是数组的20%。
根据这个数字,你需要什么范围的数组索引?
如何打印数字?
如何打印一系列数字?
答案 2 :(得分:0)
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]
}