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

Chương trình mô phỏng K ứng dụng gần đây nhất (MRU) trong C++

Mô phỏng hành vi Alt+Tab: danh sách ứng dụng mở, vị trí 0 = ứng dụng đang hoạt động, vị trí 1 = gần đây nhất, ... Chuyển ứng dụng tại vị trí k lên đầu (vị trí 0), các ứng dụng khác dịch chuyển.

Ví dụ: arr={1,2,3,4,5}, k=2 (0-based) → arr[2]=3 lên đầu → {3,1,2,4,5}.

Thuật toán

  1. Lưu id = arr[k].
  2. Dịch các phần tử từ 0 đến k-1 sang phải một vị trí.
  3. Gán arr[0] = id.

Ví dụ minh họa (C++)

#include <bits/stdc++.h>
using namespace std;

void recently(int* arr, int size, int elem) {
    int idx = elem % size; // xử lý elem >= size
    int id = arr[idx];
    // Dịch phải các phần tử trước idx
    for (int i = idx; i > 0; --i)
        arr[i] = arr[i-1];
    arr[0] = id;
}

void print(int* arr, int size) {
    for (int i = 0; i < size; ++i) cout << arr[i] << " ";
    cout << endl;
}

int main() {
    int arr[] = {6, 1, 9, 5, 3};
    int size = sizeof(arr)/sizeof(arr[0]);
    int elem = 3; // chỉ số muốn chuyển lên đầu
    recently(arr, size, elem);
    cout << "MRU order: ";
    print(arr, size);
    return 0;
}

Kết quả

MRU order: 5 6 1 9 3