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

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

时间:2016-05-10 07:22:18      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:include   程序设计   start   

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

 

    首先,可以想到,用前后两个指针一个在数组首一个在数组尾同时往数组中间遍历,当遇到前指针遇到偶数后指针遇到奇数时,就将两个数交换,直到两指针相遇或者前指针超过了后指针,这个有点类似快速排序的思想;

程序设计如下:

#include <iostream>
#include <assert.h>
using namespace std;

void AdjustArr(int *parr, size_t size)   //调整数组
{
    assert(parr && size);

    int *start = parr;
    int *end = parr+size-1;

    while(start < end)
    {   
        while((start < end)&&((*start % 2) != 0))//当start指针遇到偶数停止
            ++start;
        while((start < end)&&((*end % 2) == 0))  //当end指针遇到奇数停止
            --end;
        if(start < end)//判断start和end位置
        {   swap(*start, *end);
            ++start;
            --end;
        }
        else
            return;
    }   
}

void PrintArr(int *parr, size_t size)  //打印数组
{
    assert(parr && size);

    for(size_t i = 0; i < size; ++i)
    {   
        cout<<parr[i]<<" ";
    }   
    cout<<endl;
}

int main()
{
    int arr[] = {1,5,2,4,6,11,3,8,0,7};
    size_t size = sizeof(arr)/sizeof(arr[0]);

    PrintArr(arr, size);
    AdjustArr(arr, size);
    PrintArr(arr, size);

    return 0;
}


运行程序,结果:

技术分享



《完》

本文出自 “敲完代码好睡觉zzz” 博客,请务必保留此出处http://2627lounuo.blog.51cto.com/10696599/1771627

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

标签:include   程序设计   start   

原文地址:http://2627lounuo.blog.51cto.com/10696599/1771627

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