长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换,以完成排序。
#include <string>
#include <iostream>
using namespace std;
void swap_with_zero(int *array, int len, int n)
{
int zIndex = -1;
int nIndex = -1;
for (int i = 0; i < len; i++)
{
if (array[i] == 0)
zIndex = i;
if (array[i] == n)
nIndex = i;
}
int t = array[zIndex];
array[zIndex] = array[nIndex];
array[nIndex] = t;
}
void sort(int *array, int len)
{
if (len < 1)
return;
for (int i = len-1; i>0; i--)
{
if (array[i] == i)
continue;
swap_with_zero(array, len, array[i]);
swap_with_zero(array, len, i);
}
}
int main() {
int a[5] = { 3,2,0,4,1 };
sort(a, 5);
for (int i = 0; i < 5; i++)
{
cout << a[i] << endl;
}
return 0;
}