今天遇到这样的一道题:
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
意思是给出的数组中把是奇数的数放在数组前面,而偶数放在后面。
咱们先不多说,先看我写得代码:
#include<stdio.h>
void divide(int arr[],int size)
{
int i = 0;
int temp = 0;
int *p = arr;
int *q = arr+size-1;
while(*p!=*q)
{
if((*p%2)==0)
{
temp = *p;
}
else
{
p++;
}
if((*q%2)==1)
{
*p = *q;
*q = temp;
}
else
{
q--;
}
}
for(i=0; i<size; i++)
{
printf("%d ",arr[i]);
}
}
int main()
{
int arr[] = {8,4,6,1,5,5,7,6,89,54,36};
int size = sizeof(arr)/sizeof(arr[0]);
divide(arr,size);
return 0 ;
}
创建临时存储变量,用于交换位置。
看看代码的运行结果。