#include<stdio.h>

void sort(int *p, int len)
{
	int *end = p;
	end = p + len - 1;
	while (p<end)
	{
		if (*p % 2 == 0)
		{
			while (end)
			{
				if (*end % 2 == 1)
				{
					break;
				}
				end--;
			}
			int tmp = *end;
			*end = *p;
			*p = tmp;
			p++;
		}
		else
		{
			p++;
		}
		
	}


}
int main()
{
	int arr[] = { 3,5,4,8,9,5,6,2,6};
	int len = sizeof(arr) / sizeof(arr[0]);
	sort(arr,len);
	int i = 0;
	for (i = 0; i < len; i++)
	{
		printf("%d", arr[i]);
	}



	return 0;
}

输出结果为3,5,5,9,8,4,6,2,6
这道题我的的想法是定上两个标志,一个指向首部一个指向尾部,判断首元素如果是奇数则不管他,如果是偶数则和最后一个比较,这是如果尾部元素是奇数则交换否则尾部元素向前移动,直到找到奇数,依次循环,直到两个标志相遇停下。