C++ 实现最近使用 (MRU) 应用程序
给定一个数字 k 和一个数组 arr[n],其中包含 n 个整数元素,这些元素存储系统中已打开的应用程序的 ID;任务是显示 k 个最近使用的应用程序,例如,当我们按下 alt+tab 时,会显示所有最近使用的应用程序,最近使用的应用程序排在最前面,最不最近使用的应用程序排在最后面。每个 ID 的位置代表系统中不同的应用程序 -
它们如下所示 -
- arr[0] 中的 ID 是当前正在使用的应用程序的 ID。
- arr[1] 中的 ID 是最近使用的应用程序的 ID。
- arr[n-1] 中的 ID 是最不最近使用的应用程序的 ID。
注意 - 当我们按下 Alt+Tab 键时,有一个指针,它会遍历所有打开的应用程序,从索引 0 开始,当前正在使用的应用程序。
示例
Input: arr[] = {1, 2, 3, 4, 5}, k=2 Output: 3 1 2 4 5 Explanation: We wished to switched the app with id 3, so it will become the currently active app and other active apps will be the most recently used now Input: arr[] = {6, 1, 9, 5, 3}, k=3 Output: 5 6 1 9 3
我们将使用的方法来解决上述问题 -
- 将数组 arr[n] 和 k 作为输入。
- 获取用户想要切换的应用程序的索引,即 k。
- 将索引 k 处的 ID 设为当前 ID,然后按顺序排列。
- 打印结果。
算法
Start Step 1-> declare the function to find k most recently used apps void recently(int* arr, int size, int elem) Declare int index = 0 Set index = (elem % size) Declare and set int temp = index, id = arr[index] Loop While temp > 0 Set arr[temp] = arr[--temp] End Set arr[0] = id Step 2-> declare function to print array elements void print(int* arr, int size) Loop For i = 0 and i < size and i++ Print arr[i] End Step 3-> In main() Declare and set for elements as int elem = 3 Declare array as int arr[] = { 6, 1, 9, 5, 3 } Calculate size as int size = sizeof(arr) / sizeof(arr[0]) Call recently(arr, size, elem) Call print(arr, size) Stop
示例
#include <bits/stdc++.h> using namespace std; // Function to update the array in most recently used fashion void recently(int* arr, int size, int elem) { int index = 0; index = (elem % size); int temp = index, id = arr[index]; while (temp > 0) { arr[temp] = arr[--temp]; } arr[0] = id; } //print array elements void print(int* arr, int size) { for (int i = 0; i < size; i++) cout << arr[i] << " "; } int main() { int elem = 3; int arr[] = { 6, 1, 9, 5, 3 }; int size = sizeof(arr) / sizeof(arr[0]); recently(arr, size, elem); cout<<"array in most recently used fashion : "; print(arr, size); return 0; }
输出
array in most recently used fashion : 5 6 1 9 3
广告