D. *_*Ace -1 java algorithm logic
我有以下数组列表:
arrList = {"A", "2b", "3c", "4x", "5y", "6k", "7", "8", "9", "10", "11", "13", "14", "15", "16", "17", "18", "19", "20"}
Run Code Online (Sandbox Code Playgroud)
我想移动元素,所以它变成:
arrList = {"A", "3c", "4x", "5y", "6k", "2b", "7", "8", "9", "10", "11", "13", "14", "15", "16", "12", "17", "18", "19", "20"}
Run Code Online (Sandbox Code Playgroud)
请注意:第 2 位中的项目已移至第 6 位。第 12 位已移至第 16 位
谁能告诉我如何使用 for 循环实现这一目标?或者,还有更好的方法?
如果我的列表是动态的并且不断增长,我希望继续使用相同的模式,以便项目在:
第 22 位将移至第 26 位
在代码行方面,最简单的方法是从列表中删除元素并将其重新插入到新位置:
list.add(toPos, list.remove(fromPos));
Run Code Online (Sandbox Code Playgroud)
然而,这不一定是最有效的方法,因为它需要数组列表中的所有元素通过删除向下移动,并通过插入向上移动。
您可以通过显式原位移动所有元素来更有效地完成此操作:
Integer fromValue = list.get(fromPos);
int delta = fromPos < toPos ? 1 : -1;
for (int i = fromPos; i != toPos; i += delta) {
list.set(i, list.get(i + delta));
}
list.set(toPos, fromValue);
Run Code Online (Sandbox Code Playgroud)