我有以下代码用于对棋盘游戏中的动作进行排序。在我看来,它可以进行高度优化:
private List<Move> sortMoves(List<Move> moves, int depth)
{
List<Move> sorted = new ArrayList<Move>();
if (moves.size() == 0)
return sorted;
List<Move> primary = new ArrayList<Move>();
List<Move> rest = new ArrayList<Move>();
for(int i = 0; i < moves.size(); i++)
{
if (killers.primary[depth] != null && moves.get(i).equals(killers.primary[depth]))
primary.add(moves.get(i));
else
rest.add(moves.get(i));
}
sorted.addAll(primary);
sorted.addAll(rest);
return sorted;
}
有没有更好,更有效的方法(即相交两个列表并返回一个排序列表)?
注意:该函数的目标是删除移动列表中的杀手移动(主要),然后返回一个新列表,其中首先是杀手移动,然后是原始移动列表中的列表。