#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
这道题我的的想法是定上两个标志,一个指向首部一个指向尾部,判断首元素如果是奇数则不管他,如果是偶数则和最后一个比较,这是如果尾部元素是奇数则交换否则尾部元素向前移动,直到找到奇数,依次循环,直到两个标志相遇停下。转载于:https://blog.51cto.com/wpfbcr/1710465
本文介绍了一种通过双指针技术实现的数组排序算法,该算法可以将数组中的所有奇数移动到前面,偶数移动到后面。通过使用两个指针分别从数组的头部和尾部开始扫描,有效地完成了奇偶数的排序。
2407

被折叠的 条评论
为什么被折叠?



