#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
这道题我的的想法是定上两个标志,一个指向首部一个指向尾部,判断首元素如果是奇数则不管他,如果是偶数则和最后一个比较,这是如果尾部元素是奇数则交换否则尾部元素向前移动,直到找到奇数,依次循环,直到两个标志相遇停下。本文出自 “痕迹” 博客,请务必保留此出处http://wpfbcr.blog.51cto.com/10696766/1710465
原文地址:http://wpfbcr.blog.51cto.com/10696766/1710465