调整数组使奇数全部都位于偶数前面。

输入一个整数数组,实现一个函数,来调整该数组中数字的顺序

使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

方法一:

从两边向中间转换位置

指针

#include
#include
#include

void even_old(int *arr1,int size)
{
	assert(arr1);
	int *p1 = arr1;
	int *p2 = arr1+size-1;

	if (size == 0||p1==NULL)
		return 0;
	while (p1

方法二:

数组

#include
#include

void swap(int *pa, int *pb)
{
	int tmp=*pa;
	*pa = *pb;
	*pb = tmp;

}
int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
	int size = sizeof(arr) / sizeof(arr[0]);

	int start = 0;
	int end = size - 1;
	int i = 0;

	while (start < end)
	{
		while ((start < end) && (arr[start]) % 2 != 0)
		{
			start++;
		}
		while ((start < end) && (arr[end]) % 2 == 0)
		{
			end --;
		}
		swap(arr + start, arr + end);
		start++;
		end--;
	}
	for (i = 0; i < size; i++)
		printf("%d ", arr[i]);
	system("pause");
	return 0;

}