编程:0交换排序

长度为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;
}

猜你喜欢

转载自blog.csdn.net/Doutd_y/article/details/82495678
今日推荐