荷兰三色旗问题。学以致用,理解更深刻了。顺便参看一下非常精简的一个解法,其实本质一样:http://discuss.leetcode.com/questions/251/sort-colors
public class Solution { public void sortColors(int[] A) { // Start typing your Java solution below // DO NOT write main() function int len = A.length; if (len == 0) return; int i = 0; while (i < len && A[i] == 0) i++; int j = len - 1; while (j >= 0 && A[j] == 2) j--; for (int k = i; k <= j;) { if (A[k] == 0) { int tmp = A[i]; A[i] = A[k]; A[k] = tmp; i++; if (k < i) k = i; } else if (A[k] == 2) { int tmp = A[j]; A[j] = A[k]; A[k] = tmp; j--; } else {k++;} } } }