#include <iostream>
using namespace std;
void Swap(int* v1, int* v2) {
int temp = *v1;
*v1 = *v2;
*v2 = temp;
}
void SortArray(int* array, int len) {
int i = 0, j = len - 1, k = 0;
while (k < j) {
if (array[k] == 2) {
while(array[j] == 2 && j > k) {
j--;
}
if (j > k) {
swap(array[k], array[j]);
}
}
if (array[k] == 0) {
while(array[i] == 0 && i < k) {
i++;
}
if (i < k) {
swap(array[i], array[k]);
}
}
if (array[k] == 1 || k == i) {
k++;
}
}
}
int main() {
const int kLen = 20;
int array[kLen] = {1, 2, 1, 0, 2, 1, 2, 2, 1, 0, 2, 1, 2, 1, 2, 0, 0, 2, 1, 1};
SortArray(array, kLen);
for (int i = 0; i < kLen; i++) {
cout << array[i] << " ";
}
}
一个数组只含0,1,2三种数,对这个数组排序,要求只能扫描一遍数组
最新推荐文章于 2022-08-24 22:09:44 发布