跟踪数组中的最小数字

时间:2011-06-06 07:00:08

标签: java arrays numbers

我正在努力追踪最低数字的分数,如果我发现这些球员的得分最低,我不希望他们在下一轮比赛中再次出场。我已经将这些低玩家值存储到数组中,但我只希望它们存储在ONCE中。

 for(int i =0; i <  player.length; i++){
  for(int j =1; j <  player.length; j++){
     if(player[j] < player[i]){
       min[i] =j;
       System.out.println(min[i]+" "+round+" "+playerList.get(j));
            }
        }
    }

4 个答案:

答案 0 :(得分:2)

一种方法是使用排序数组,但就插入数组而言,它可能是一个开销。

另一种方法是将数组封装在一个数据结构中,该数据结构内部跟踪数组中最低值的索引。此数据结构将具有特殊的插入和删除方法,如果要插入的新数字低于当前最低数字,则在插入和删除时始终会检查以更新私有成员。

此数据结构还应公开一个方法,以返回数组中最小数字的索引,该索引已存储在成员变量中。

答案 1 :(得分:1)

排序数组中最小数字的一种方法

// let array be of size x
 int arr[]=new int[x];

// Now,assign some values to array

int smallest=arr[0]; // assign any value to smallest

// logic

  for( int i=0; i < arr.length; i++ ) {
     if( smallest > arr[i] ) {
       smallest = arr[i];
     }
   }

   System.out.println(smallest); // gets the smallest number out on output stream

答案 2 :(得分:1)

改为2个独立的循环。一个找到最低的数字,第二个收集索引。

int minValue = 1000000; //
for(int i =0; i< player.length; i++){
  if(player[i] < minValue){
    minValue = player[i];
  }
}
int j =0;
for(int i =0; i< player.length; i++){
  if(player[i]==minValue){
    min[j]=i;
    j++;
  }
}

答案 3 :(得分:0)

除非这是家庭作业,否则你应该为每个玩家和分数设置一个对象。您可以将它们添加到PriorityQueue以始终获得最低值或将它们添加到Collection / array []并调用sort()。

您可能只想保留一份副本,但这样可以为您自己做更多工作,并且最多只能节省一毫秒的计算机时间。

大多数时候,你的时间比计算机更有价值。