跟踪数组中的最小数字

我试图记录最低数字的分数,如果我找到那些球员的最低分数,我不希望他们在下一轮再次比赛。 我已经将那些低玩家值存储到数组中,但我只希望它们存储在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)); } } } 

而是做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++; } } 

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

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

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

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

 // 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 

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

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

大部分时间你的时间比计算机更有价值。