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

Sắp xếp mảng sao cho phần tử chỉ số chẵn nhỏ hơn chỉ số lẻ trong C++


Cho mảng nguyên arr[]. Nhiệm vụ: sắp xếp mảng sao cho phần tử ở chỉ số chẵn nhỏ hơn phần tử ở chỉ số lẻ.

Các trường hợp đầu vào/đầu ra

Đầu vào - int arr[] = {2, 1, 4, 3, 6, 5, 8, 7}

Đầu ra - Mảng trước: 2 1 4 3 6 5 8 7. Sắp xếp chỉ số chẵn < lẻ: 1 4 2 6 3 8 5 7

Giải thích - Mảng size 8. Sắp xếp: chỉ số chẵn (0,2,4,6) < chỉ số lẻ (1,3,5,7) → 1 4 2 6 3 8 5 7.

Đầu vào - int arr[] = {10, -1, 7, -5, 6, -9}

Đầu ra - Mảng trước: 10 -1 7 -5 6 -9. Sắp xếp chỉ số chẵn < lẻ: -1 10 -5 7 -9 6

Giải thích - Mảng size 6. Kết quả: -1 10 -5 7 -9 6.

Phương pháp sử dụng trong chương trình dưới đây

  • Nhập mảng, tính size.

  • In mảng trước.

  • Gọi Rearrangement(arr, size).

  • Trong Rearrangement:

    • For i=0..size-2:

      • Nếu i%2==0 (chẵn) và arr[i] > arr[i+1] → swap(arr[i], arr[i+1]).

      • Nếu i%2!=0 (lẻ) và arr[i] < arr[i+1] → swap(arr[i], arr[i+1]).

  • In kết quả.

Ví dụ mã

#include <iostream> using namespace std; void Rearrangement(int* arr, int size){    for(int i = 0; i < size - 1; i++){       if(i % 2 == 0 ){          if(arr[i] > arr[i + 1]){             swap(arr[i], arr[i + 1]);          }       }       if(i % 2 != 0){          if(arr[i] < arr[i + 1]){             swap(arr[i], arr[i + 1]);          }       }    } } int main(){    int arr[] = {2, 1, 4, 3, 6, 5, 8, 7};    int size = sizeof(arr) / sizeof(arr[0]);    cout<<"Mảng trước: ";    for (int i = 0; i < size; i++){       cout << arr[i] << " ";    }    Rearrangement(arr, size);    cout<<"\nSắp xếp chỉ số chẵn nhỏ hơn lẻ: ";    for(int i = 0; i < size; i++){       cout<< arr[i] << " ";    }    return 0; }

Đầu ra

Nếu chạy mã trên sẽ cho kết quả:

Mảng trước: 2 1 4 3 6 5 8 7 Sắp xếp chỉ số chẵn nhỏ hơn lẻ: 1 4 2 6 3 8 5 7