【发布时间】:2014-09-12 17:45:08
【问题描述】:
我想从数组int[] a 中找到并返回一个包含已排序的k 个最小元素的k.length 数组。
数组a的内容不能有任何变化。在制作了一个 k.length 的帮助数组后,我从 a 中复制了 k 个第一个值,然后对其进行排序。
在此之后,如果数组 a 中有任何元素小于帮助数组中的元素,我将其放在正确的位置,最后一个元素消失,依此类推。
方法:
public static int[] kMinst(int[] a, int k)
可能的输入:
int[] a = {1,2,3,4,5,6,7,8,9,10}
kMinst(a, a.length);
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
另一个输入:
int[] b = {4,3,2,1}
kMinst(b, 3);
输出:
[1, 2, 3]
到目前为止我所拥有的。而且它不起作用而且效率太低:
public static int[] kMinst(int[] a, int k) {
if (k < 1 || k > a.length) {
throw new IllegalArgumentException("k har ikke riktig verdi!");
}
int[] verdier = new int[k];
for (int i = 0; i < verdier.length; i++) {
verdier[i] = a[i];
}
sortering(verdier);
for (int i = verdier.length; i < a.length; i++) {
for (int j = verdier.length - 1; j > 0; j --) {
if (a[i] < a[j]) {
int temp = a[j];
for (int l = verdier.length - 1; l > j; l--) {
a[l] = a[l - 1];
}
a[j] = temp;
}
}
}
return verdier;
}
【问题讨论】:
-
我想我已经在几个小时前看到了这个问题。还是只是似曾相识?
-
Chu 班的每个人都有相同的作业,TheQuickBrownFox。
-
@B.Dalton 这很正常。但令我惊讶的是,班里的每个人都在 StackOverflow 上发布了作业?
-
@TheQuickBrownFox 哈哈,同意,班长呢?
-
@Toeffen 不,还没有解决。他们删除了问题,并一次又一次地问它:)