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

发布时间:2020-07-05 03:52:59 作者:给我个bit位
来源:网络 阅读:448

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

 

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

程序设计如下:

#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;
}


运行程序,结果:

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



《完》

推荐阅读:
  1. 剑指offer:调整数组顺序使奇数位于偶数前面
  2. 调整数组使奇数全部都位于偶数前面

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

程序设计 include start

上一篇:每天学一点Scala之 方法与函数的区别

下一篇:深信达:企业内部信息安全管理是企业发展的重中之重

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》