/*****************************************************
题目:输入一个整数数组,实现一个函数来调整该数组中数字
的顺序,使得所有奇数位于数组的前半部分,所以偶数位于数
组的后半部分。
*****************************************************/
#include<stdio.h>
void reOrder(int* data, int length)
{
if(data == NULL || length <= 0)
return;
int* pBegin = data;
int* pEnd = data + length -1;
//设置两个指针,当第一个指针指向奇数,第二个指向偶数,交换数字
while(pBegin < pEnd){
while(((*pBegin) & 1) && pBegin<pEnd)
++pBegin;
while(!((*pEnd) & 1) && pBegin<pEnd)
--pEnd;
if(pBegin < pEnd)
{
int temp = *pBegin;
*pBegin = *pEnd;
*pEnd = temp;
}
}
}
void printfArray(int* data,int length)
{
for(int i=0; i<length; ++i)
{
printf("%d\t", data[i]);
}
printf("\n");
}
int main()
{
const int length = 10;
int data[10] = {1,2,3,4,5,6,7,8,9,10};
printfArray(data, length);
reOrder(data, length);
printfArray(data, length);
return 0;
}
调整数组顺序使得奇数位于偶数前面,布布扣,bubuko.com
原文:http://blog.csdn.net/walkerkalr/article/details/20645533