華為機試 LRU演算法

2021-07-14 17:52:51 字數 1033 閱讀 4627



最近最少使用演算法,如果快取不夠,lru演算法就是將最近最久未使用的頁面淘汰,並計算最終的缺頁次數

public static int count(int size , int data)

size快取區大小,儲存的最大頁面數

data陣列按順序向快取傳送頁面請求

(1)需要判斷緩衝區是否已經到最大值

(2)統計緩衝區中每個頁面的訪問頻率

(3)緩衝區滿的時候,替換出訪問頻率最小的

輸入序列 4,7,0,7,1,0,1,2,1,2,6

public class main;//頁面請求

int buffer_size = 5;//快取區最大容量

lru(buffer_size , data);

system.out.println(lack_page_num);

}/**

* lru演算法實現:

* 定義:lru是leastrecentlyused近期最少使用演算法。記憶體管理的一種頁面置換演算法。

*     對於在記憶體中但又不用的資料塊(記憶體塊)叫做lru。

* 演算法思想:淘汰最長沒有使用的頁

* @param size 快取區最大容量

* @param data 頁面請求

* */

private static void lru(int size , int data)else

buffer[size - 1] = data[i];

}   }}

/*** 判斷緩衝區中是否存在某個元素,如果存在,先刪除然後重新插入

* 保證緩衝區陣列的元素0~length-1是按照近期使用情況的順序從  最久未使用~最近使用

* */

private static void deletesamepageinbuffer(int key)

current_size--;//刪除掉乙個元素更新當前緩衝區的頁面個數

return;}} 

//如果緩衝區不存在當前頁面編號,更新缺頁次數

if(!i***ist)} }

華為機試整理

include stdafx.h includeusing namespace std int main int argc,tchar argv cout 2.大數相加 用stl的string比較方便,如下,自己測了幾組資料沒有什麼問題。include stdafx.h include includ...

華為機試 2013

1.字串轉換 問題描述 將輸入的字串 字串僅包含小寫字母 a 到 z 按照如下規則,迴圈轉換後輸出 a b,b c,y z,z a 若輸入的字串連續出現兩個字母相同時,後乙個字母需要連續轉換2次。例如 aa 轉換為 bc,zz 轉換為 ab 當連續相同字母超過兩個時,第三個出現的字母按第一次出現算。...

華為機試3

明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 1000 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序...