要求:
给定一个数列A,试将其变为奇数在左偶数在右的形式。例如A=[12,8,7,5,6,11],则变换后的A'=[11,5,7,8,6,12]
只需要先奇数后偶数即可,不需要排序。
实现代码:
/*
*给定一个数列A,试将其变为奇数在左偶数在右的形式。
*例如A=[12,8,7,5,6,11],则变换后的A'=[11,5,7,8,6,12]
*只需要先奇数后偶数即可,不需要排序。
*/
#include <stdio.h>
#include <stdlib.h>
void change(int a[],int len)
{
int low=0;
int high=len-1;
while (low < high)
{
while (low < high && a[high] % 2 == 0)
{
high--;
}
while (low < high && a[low] % 2 != 0)
{
low++;
}
if (low < high)
{
int tem = a[low];
a[low] = a[high];
a[high] = tem;
}
}
}
int main()
{
int array[]={12,8,7,5,6,11};
change(array,6);
int i;
for(i=0;i<6;i++)
{
printf("%5d",array[i]);
}
printf("\n");
system("pause");
return 0;
}
运行结果: