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