题目描述
给定一个数组arr, 和一个数num, 请把小于num的数放在数组的左边, 等于num的数放在数组的中间, 大于num的数放在数组的右边。
一、数组
1.1 解法
1.2数组荷兰国旗问题测试结果及代码
#include <iostream>
#include <stdlib.h>
using namespace std;
const int num = 3;
void printArray(int a[], int N) {
for (int i = 0; i < N; ++i) {
cout << a[i] << " ";
}
cout << endl;
}
void Swap(int &x, int &y) {
int t = x;
x = y;
y = t;
}
void compare(int a[], int N) {
int cur = 0;
int more = N - 1;
int left = 0;
while (cur <= more) {
if (a[cur] < num) {
Swap(a[cur++], a[left++]);
} else if (a[cur] == num) {
cur++;
} else {
Swap(a[cur], a[more--]);
}
}
}
void test(int a[], int N) {
}
int main (int argc, char* argv