获取数组的正确索引值

时间:2015-09-09 17:40:37

标签: java sorting indexing

我有一个问题我无法解决。 我正在尝试创建一个方法,在该方法中,我想返回一个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;
}

有什么建议吗?

1 个答案:

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