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

    xiaoxiao2021-04-13  32

    面试题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; }
    转载请注明原文地址: https://ju.6miu.com/read-669427.html

    最新回复(0)