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

来源:互联网 发布:高端女装淘宝货源 编辑:程序博客网 时间:2024/06/18 00:37
面试题14:调整数组顺序使奇数位于偶数前面
 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序。使得所有奇数位于数组的前半部分,所有偶数位于奇数的后半部分;

思路:(1)维护两个指针分别指向数组的头和尾;
          (2)移动两个指针,当头指针指向的数字为偶数并且尾指针指向的数字为奇数时;交换两个指针指向的值;
          (3)以此进行,直到头指针等于尾指针停止循环;

代码:
//AdjustArrOddBeforeEven.hpp#pragma once#include<iostream>using namespace std;void AdjustOddBeforeEven(int arr[],int size){    int* start = arr;    int* end = arr+size-1;    while(start < end)    {        while(*start%2 == 1)        {            start++;        }        while(*end%2 == 0)        {            end--;        }        swap(*start,*end);    }}void Display(int arr[],int size){    for(int i=0;i<size;++i)    {        cout<<arr[i]<<" ";    }    cout<<endl;}void TestAdjustOddBeforeEven(){    int arr[]={1,2,3,4,5};    int size=sizeof(arr)/sizeof(arr[0]);    cout<<"Before adjust:";    Display(arr,size);    AdjustOddBeforeEven(arr,size);    cout<<"In adjust:";    Display(arr,size);}//AdjustArrOddBeforeEven.cpp#include"OddBeforeEven.h"int main(){    TestAdjustOddBeforeEven();    return 0;}




0 0
原创粉丝点击