前言:
问题网上已经很清楚了,和快排一样的partition。下面直接上代码。
对代码有疑问的朋友,欢迎留言。
#include<iostream>
#include<algorithm>
using namespace std;
void swap(int arr[], int i, int j) {
int tem;
tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
//n为数组的长度
void sortcolors(int arr[], int n) {
if (n == 0) {
return;
}
int less = 0;
int more = n - 1;
int l = 0;
while (l <=more) {
if (arr[l] == 0) {
swap(arr, l, less);
less++;
l++;
}
else if (arr[l] == 2) {
swap(arr, l, more);
more--;
}
else {
l++;
}
}
}
int main() {
//text
int a[] = { 1,2,2,1,0,0,1 };
int l = sizeof(a) / sizeof(a[0]);
sortcolors(a, l);
for (int i = 0; i < l; i++) {
cout << a[i] << " ";
}
return 0;
}