gpt4 book ai didi

java - 获取数组的正确索引值

转载 作者:太空宇宙 更新时间:2023-11-04 13:27:51 27 4
gpt4 key购买 nike

我有一个无法完全解决的问题。我正在尝试创建一个方法,在该方法中我想返回一个 int 数组,其中索引按表“a”中前 3 个数字的排序顺序排列。例如,如果我有一个包含 {8,9,4} 的 a,我想返回 {2,0,1}。这是因为 2 是最小数字的索引,0 是最小数字的索引,1 是三个数字中最大数字的索引。再比如:a={2,6,3},则返回值为{0,2,1}。

我还创建了一个方法,但我就是无法让它工作。

另外:Indeks = 索引

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;
}

有什么建议吗?

最佳答案

如果这必须在 3 次比较内完成,那么让我用游戏来解释。

游戏将在两个数字之间进行,较大的数字获胜,并且他的分数会增加。

最初,所有 3 个数字的得分均为 0。

自然会进行三场比赛。

最大的数字是得分为 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;
}

关于java - 获取数组的正确索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32486031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com