Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Sắp xếp số chẵn ở chỉ mục chẵn, số lẻ ở chỉ mục lẻ trong C++


Cho mảng arr[] kích thước n (n/2 số chẵn, n/2 số lẻ). Nhiệm vụ: sắp xếp số chẵn ở chỉ mục chẵn, số lẻ ở chỉ mục lẻ.

Ví dụ:

Đầu vào: arr[] = {5, 1, 6, 4, 3, 8}

Đầu ra: arr[] = {6, 1, 5, 4, 3, 8} (hoặc tương tự)

Phương pháp giải

Dùng 2 chỉ mục: eIndex (chẵn, bắt đầu 0), oIndex (lẻ, bắt đầu 1). Duyệt: tăng eIndex nếu arr[eIndex] chẵn, tăng oIndex nếu arr[oIndex] lẻ. Nếu cả hai đều sai vị trí => hoán đổi. Lặp cho đến hết.

Chương trình minh họa

Ví dụ

#include <iostream>
using namespace std;

void O_EReshuffle(int arr[], int n) {
    int oIndex = 1;
    int eIndex = 0;
    for (int i = 0; i < n;) {
        while (eIndex < n && arr[eIndex] % 2 == 0)
            eIndex += 2;
        while (oIndex < n && arr[oIndex] % 2 == 1)
            oIndex += 2;
        if (eIndex < n && oIndex < n)
            swap(arr[eIndex], arr[oIndex]);
        else
            break;
    }
}

int main() {
    int arr[] = { 5, 1, 6, 4, 3, 8 };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "Array before Reshuffling: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << "\t";
    }
    O_EReshuffle(arr, n);
    cout << "\nArray after Reshuffling: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << "\t";
    };
    return 0;
}

Kết quả

Array before Reshuffling: 5 1 6 4 3 8 Array after Reshuffling: 4 1 6 5 8 3