所以我有这种方法将采取整数的ArrayList,我比较2个子数组之间并进行一些数字交换。使用ArrayList的递归方法
我比较每个子数组的第一个元素,它只是数组的一半,然后交换元素,如果更大的数字不在左边的子列表中。之后,我想递归地做同样的事情,但到上半年。
所以如果我键入3 5 8 2 1 7 6 4 我想看到这个;
[3,5,8,2,1,7,6,4]
[3,7,8,4,1,5,6,2]
[8,7 ,3,4,1,5,6,2]
[8,7,3,4,1,5,6,2]
我希望能够做的是,一旦我有完成我所需要的,对于基本数组,我需要递归地处理同一个数组的前半部分。但是,当我编译时,我得到一个错误,说我有不兼容的类型。所以我假设subList函数不提供给我一个ArrayList。
任何指针gettign这个工作正常吗?
public static void tournament(ArrayList<Integer> players){
int mid = players.size()/2;
for(int i=0; i < mid; i++){
if(players.subList(0,mid).get(i) < players.subList(mid,players.size()).get(i)){
int temp = players.subList(0,mid).get(i);
players.subList(0,mid).set(i , players.subList(mid,players.size()).get(i));
players.subList(mid,players.size()).set(i,temp);
}// end if
}// end for
System.out.println(players);
if(players.size() > 2){
tournament(players);
}// end if
}// end tournament
我不完全明白你想要做什么,但是你的代码的某些部分看起来不必要的复杂。例如,'players.subList(0,mid).get(i)'等同于'players.get(i)';和'players.subList(mid,players.size()).set(i,temp)'相当于'players.set(mid + i,temp)'。没有?事实上,我没有看到你使用'subList' * *完成任何事情的地方。另外,你对'锦标赛(玩家)'的递归调用并没有什么意义,因为它会无限期地递归(直到你遇到'StackOverflowException')。 – ruakh 2012-03-31 03:43:18
我在添加作业标签 – Bohemian 2012-03-31 03:57:22