我正在努力追踪最低数字的分数,如果我发现这些球员的得分最低,我不希望他们在下一轮比赛中再次出场。我已经将这些低玩家值存储到数组中,但我只希望它们存储在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));
}
}
}
答案 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()。
您可能只想保留一份副本,但这样可以为您自己做更多工作,并且最多只能节省一毫秒的计算机时间。
大多数时候,你的时间比计算机更有价值。