调整数组中的顺序使奇数位于偶数前边

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调整数组中的顺序使奇数位于偶数前边相关的知识,希望对你有一定的参考价值。

调整数组中的顺序使奇数位于偶数前边

输入一个整数数组,实现一个函数来调整该数组中字数的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。

可以用运两个指针,第一个指针初始化时指向数组的第一个数字,它指向后移动。第二个指针初始化时指向数组的最后一个数字,它只向前移动,两个指针相遇之前,第一个指针总是位于第二个指针前边。

(1)当第一个指针指向奇数时向后移动,当第二个指针指向偶数时向前移动;

(2)反之交换这两个数字;

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h> 

#include<assert.h>

void reorderarray(int *pdata,int length)

{

int *pstart=pdata;

int *pend=pdata+length-1;

int temp;

assert(pdata);

if(*pdata==NULL||length==0)

{

return;

}

 

while(pstart<pend)

{

//向后移动pstart直到遇到偶数为止

    while(pstart<pend&&(*pstart&1)!=0)

{

  pstart++;

}

//向前pend移动直到遇到奇数为止

while(pstart<pend&&(*pend&1)==0)

{

  pend--;

}

if(pstart<pend)

{

temp=*pstart;

*pstart=*pend;

*pend=temp;

}

}

}

 

int main()

{

int arr[]={1,2,3,4,5,6,7,8,9,10};

int length=sizeof(arr)/sizeof(arr[0]);

    int i=0;

reorderarray(arr,length);

for(i=0;i<length;i++)

printf("%d ",arr[i]);

   system("pause");

    return 0;

}


以上是关于调整数组中的顺序使奇数位于偶数前边的主要内容,如果未能解决你的问题,请参考以下文章

调整数组奇偶顺序

求调整数组顺序使奇数位于偶数前面

《剑指Offer》题目:调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面

剑指offer:调整数组顺序使奇数位于偶数前面

数组调整数组顺序使奇数位于偶数前面