我有一个长度为10的数组:
Population = {1,3,4,2,7,-2,0,8,9,5}.我生成两个介于0-9之间的随机数(例如4和6)。然后我检查第四个和第六个元素(7,0),“获胜者”是较大的数字。因此,7进入赢家数组(总共5个赢家):
Winners = {7, ...}每次我想要将剩余的两个数字(包括输家)配对,并将赢家放入赢家数组。
要做到这一点,最简单的方法是使用大小为n的非固定大小的数组,并从“population”中删除一个获胜者,并将其放入“获胜者”中。然后,我可以生成1和n-1之间的两个随机数,并继续这个过程。
在Java中,如何使用固定大小的数组来完成此操作?我怎么能从我的数组中选择两个数字,而忽略任何‘赢家’的数字?
发布于 2015-02-05 00:59:04
您可以确定获胜者,然后将其交换到数组的后面:
int[] population = {1,3,4,2,7,-2,0,8,9,5};
private void turnament() {
for (int i = population.length - 1; i >= population.length / 2; i--) {
//you might want to make sure m != n.
int m = (int) Math.round(Math.random() * i);
int n = (int) Math.round(Math.random() * i);
int temp = population[i];
if (population[m] > population[n]) {
population[i] = population[m];
population[m] = temp;
} else {
population[i] = population[n];
population[n] = temp;
}
}
}这将做population.length / 2锦标赛,并将获胜者写在后面,所以最后一个元素将是第一个获胜者,第二个倒数第二个获胜者,依此类推。
或者正如@Aniket Thakur提到的那样,ArrayList将是一个很好的数据结构。
https://stackoverflow.com/questions/28326956
复制相似问题