1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Algorithm】算法设计与分析(第二版)- 王红梅 - JAVA / C++实现:3.9 荷兰国旗问题

【Algorithm】算法设计与分析(第二版)- 王红梅 - JAVA / C++实现:3.9 荷兰国旗问题

时间:2023-07-15 11:58:37

相关推荐

【Algorithm】算法设计与分析(第二版)- 王红梅 - JAVA / C++实现:3.9 荷兰国旗问题

题目:

荷兰国旗问题。要求重新排列一个由字符R,W,B(R代表红色,W代表白色,B代表兰色,这都是荷兰国旗的颜色)构成的数组,使得所有的R都排在最前面,W排在其次B排在最后。为荷兰国旗问题设计一个算法,其时间性能是O(m)

代码:

#include <iostream>using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */const int N = 20;void swap_ab (int *p, int *q){int temp = *p;*p = *p;*q = temp;}void process (int a[], int n) {int *p, *q;p = q = a;while(p != a + n - 1){if (*(p+1) < * p){q = p + 1;while(*q < *(q-1)){swap_ab(q, q-1);--q;}}++p; }}int main(int argc, char** argv) {int a[N] = {0, 2, 1, 2, 0, 1, 0, 2, 2, 1, 0, 1, 2, 1, 1, 0, 0, 1, 1, 2};cout << "处理后的数组序列为: " << endl;process(a, N);for (int i = 0; i < N; i++) {cout << a[i] << " "; }cout << endl;return 0;}

Java解法见及详细荷兰国旗算法问题解法见:/p/356604b8903f

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。