我试图把一个这样的数组:荷兰国旗算法有什么问题?
0, 1, 2, 2, 1, 0, 1, 0, 0, 1, 2
到这一点:
0 0 0 0 1 1 1 1 2 2 2
这里是我的代码:
public static int[] sortDNF(int[] tape) {
int smaller = 0; // everything with index < smaller is 0
int bigger = tape.length - 1; // everything with index > bigger is 2
int current = 0; // where we are looking now
int tmp;
while (current <= bigger) {
if (tape[current] == 0) {
tmp = tape[smaller];
tape[smaller] = tape[current];
tape[current] = tmp;
smaller++;
}
if (tape[current] == 2) {
tmp = tape[bigger];
tape[bigger] = tape[current];
tape[current] = tmp;
bigger--;
}
current++;
}
return tape;
}
这就是它产生:
0 0 0 1 1 1 1 0 2 2 2
我的问题是什么?
对于我这样的人谁不知道那是什么约,这里有一个维基百科的链接:http://en.wikipedia.org/wiki/Dutch_national_flag_problem – ChssPly76 2009-11-18 21:25:04
也许我失去了有些东西,但是sort()的结果总是不符合这些标准? – 2009-11-18 21:28:41
我只是要检查我的自我...看不到捕获 – 2009-11-18 21:31:12