码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-02-27 01:08:34      阅读:216      评论:0      收藏:0      [点我收藏+]

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

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

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

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

(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;

}


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

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

原文地址:http://10808695.blog.51cto.com/10798695/1745425

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!