我有一个问题我无法解决。 我正在尝试创建一个方法,在该方法中,我想返回一个int数组,其中索引按照排序顺序排列,用于表中的3个第一个数字" a"。 例如,如果我有一个包含{8,9,4}的a,我想返回{2,0,1}。 这是因为2是最小数字的索引,0是最小数字的索引,1是三个中最大数字的索引。 另一个例子:a = {2,6,3},则返回值为{0,2,1}。
我还创建了一种方法,但我无法让它发挥作用。
另外:Indeks = index
public static int[] indeks(int[] a)
{
int[] indeks = { 0, 1, 2 };
if(a[1] < a[0])
{
int temp = indeks[0];
indeks[0] = indeks[1];
indeks[1] = temp;
}
if(a[2] < a[0])
{
int temp = indeks[0];
indeks[0] = indeks[2];
indeks[2] = temp;
}
if(a[2] < a[1] )
{
int temp = indeks[1];
indeks[1] = indeks[2];
indeks[2] = temp;
}
return indeks;
}
有什么建议吗?
答案 0 :(得分:0)
如果必须在3次比较中完成,那么让我用游戏解释一下。
游戏将在两个数字之间进行,并且更大的数字将赢得游戏并且他的分数会增加。
最初所有3个数字的分数均为=。
自然会有三场比赛。
最大数字是得分为2(大于2)的数字。最小数字将是得分为0(大于无)的数字,中间数字为得分为1的数字(大于1)。
现在最重要的部分是填充索引数组,这很容易,但我仍然会解释它。分数本身说明他们应该通过操作的位置
score[i]%3;
和索引将填写为
index[score[i]%3]=i;
例如,如果得分[1]为2,则结果为2,索引[2] = 1。
因此,请记住这一点,该函数可以写成:
public static int[] indeks(int[] a)
{
int []score=new int[3];
int []index=new int[3];
score[0]=0;score[1]=0;score[2]=0;
//game b/w a[0] and a[1]
if(a[0]>a[1])
score[0]++;
else score[1]++;
//game b/w a[1] and a[2]
if(a[1]>a[2])
score[1]++;
else score[2]++;
//game b/w a[0] and a[2]
if(a[0]>a[2])
score[0]++;
else score[2]++;
//fill the index array
index[score[0]%3]=0;
index[score[1]%3]=1;
index[score[2]%3]=2;
}