荷兰国旗

来源:互联网 发布:360安全云盘 mac版 编辑:程序博客网 时间:2024/05/02 05:56
/* * 荷兰国旗问题0,1,2 * 采用三个标记 * begin指向排好的0后面的第一个 * current指向1 * end指向排好的2之前的一个 */void DutchFlag(int a[], int n){int current = 0;int begin = 0;int end = n-1;while(current <= end){if(a[current] == 0){swap(a[current], a[begin]);current++;begin++;}else if(a[current] == 1){current++;}else if(a[current] == 2){swap(a[current], a[end]);end--;}}}int main() {int aaaa[10]={0,1,2,1,1,2,0,2,1,0};DutchFlag(aaaa, 10);for(int i=0; i<10; i++)printf("%d*", aaaa[i]);

0 0