我正在尝试对自我实现的双向链接列表进行排序,但是它似乎无休止地迭代,而且我不确定自己在做什么错。任何帮助将不胜感激。
public void sortLine() {
int n = this.getSize();
Module current = this.leftMostModule;
Module next = this.leftMostModule.getRight();
for (int i = 1; i < n - 2; n++) {
for (int j = i; j < n - 1; j++) {
if (current.getName().compareToIgnoreCase(next.getName()) > 0) {
swap(current, next);
break;
} else if (current.getName().compareToIgnoreCase(next.getName()) < 0) {
break;
} else {
next = next.getRight();
}
}
current = current.getRight();
next = current.getRight();
}
lineMap = this.getLineArray();
}
public void swap(module current, module next) {
module temp = current;
boolean leftModule = false;
boolean rightModule = false;
if (current.isLeftMostModule()) {
leftModule = true;
}
if (next.isRightMostModule()) {
rightModule = true;
}
temp.setLeft(current.getLeft());
temp.setRight(current.getRight());
current.setLeft(next.getLeft());
current.setRight(current.getRight());
next.setLeft(temp.getLeft());
next.setRight(temp.getRight());
if (leftModule) {
next.setLeftMostModule();
current.setNonMostModule();
}
if (rightModule) {
current.setRightMostModule();
next.setNonMostModule();
}
}
我也调用了一个交换函数。谢谢。
外部for循环中的i
计数器从不增加。