【面试题】剑指Offer-14-调整顺序使奇数位于偶数的前面

    xiaoxiao2021-03-25  322

    题目概述

    解决思路

    用两个指针left和right,分别从数组的两端向中间进行遍历

    如果left找到了一个偶数,right找到一个奇数

    然后互换

    直到left和right相等

    代码实现

    #include<iostream> using namespace std; #include<assert.h> //判断一个数是否为偶数 bool IsEven(int num) { if (num % 2 == 0) return true; return false; } //交换 void ReOrder(int* arr, size_t length) { int left = 0; int right = length - 1; while (left < right) { while (left < right && IsEven(arr[left])) left++; while (left < right && !IsEven(arr[right])) right--; std::swap(arr[left], arr[right]); left++; right--; } } //打印 void PrintArr(int* arr, size_t length) { assert(arr); for (size_t i = 0; i < length; ++i) cout << arr[i] << " "; cout << endl; }

    测试函数

    void TestReOrder() { int arr[5] = { 1, 2, 3, 4, 5 }; ReOrder(arr, sizeof(arr) / sizeof(arr[0])); PrintArr(arr, sizeof(arr) / sizeof(arr[0])); }

    转载请注明原文地址: https://ju.6miu.com/read-47.html

    最新回复(0)