思路:
类似快速排序中的POTITION函数,用两个指针,一个指针P1依次向后遍历判断是不是奇数,另一个P2保持一个特性,就是P2指针前的数字都是P1判断过的奇数,后面一直到P1指针的位置都是判断过的偶数,当P1新找到一个奇数时,将P2++后并与P1所指的数字进行交换,直到P1完成循环。
#include<stdio.h>
void potition(int arr[], int size)
{
if(arr[0]%2 == 0)
{
}
int i = 0;
int j = 0;
for(i = 0; i<size; i++)
{
if(arr[i]%2 != 0)
{
int tmp = arr[i];
++j;
arr[i] = arr[j];
arr[j] = tmp;
}
}
int tmp = arr[0];
arr[0] = arr[j];
arr[j] = tmp;
}
int main()
{
int arr[] = {2,4,1,3,6,7,8,9};
potition(arr,sizeof(arr)/sizeof(int));
int i = 0;
for(i = 0; i < sizeof(arr)/sizeof(int); i++)
{
printf("%d\n",arr[i]);
}
return 0;
}