您的位置:首页 > 编程语言 > Java开发

荷兰国旗问题java

2017-03-01 10:38 387 查看
public class HollandFlagProblem {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] A = { 2, 0, 2, 0, 0, 2, 1, 1, 0, 2, 1, 0, 1, 2, 0, 1, 2, 0, 1, 0,
2, 1, 0, 2, 0, 1, 2, 0, 1, 2, 0, 2, 1, 0 };
// 排序前
for (int i : A) {
System.out.print(i + " ");
}
sort(A);
// 排序后
for (int i : A) {
System.out.print(i + " ");
}
}

public static void sort(int[] arr) {
int cur = 0;
int start = 0;
int end = arr.length - 1;
while (cur <= end) {
if (arr[cur] == 0) {
swap(arr, cur, start);
start++;
cur++;
} else if (arr[cur] == 2) {
swap(arr, cur, end);
end--;
} else {
cur++;
}
}
}
public static void swap(int[] a, int p, int q) {
int temp = a[p];
a[p] = a[q];
a[q] = temp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: