Java演算法--LRU演算法實現示例
阿新 • • 發佈:2019-01-22
LRU演算法,即Last Recently Used --選擇最後一次訪問時間距離當前時間最長的一頁並淘汰之--即淘汰最長時間沒有使用的頁。
按照最多5塊的記憶體分配情況,實現LRU演算法程式碼如下:
測試結果如下:public class LRU { private int theArray[]; private int back; //定義隊尾 private int currentSize; //佇列中存放元素個數 private int maxSize=5; //佇列中能存放元素的個數 public LRU(){ theArray=new int[maxSize]; back=0; currentSize=0; } public void queue(int a[]){ for(int i=0;i<a.length;i++){ enQueue(a[i]); } } public void enQueue(int x){ //入隊 beUsed(x); //先判斷是否已存在該頁號,若存在,刪除 if(currentSize<maxSize){ theArray[back]=x; back++; currentSize++; }else if(currentSize==maxSize){ //滿了 for(int i=0;i<maxSize-1;i++){ theArray[i]=theArray[i+1]; } theArray[maxSize-1]=x; } for(int i=0;i<currentSize;i++){ System.out.print(theArray[i]); } System.out.println(); } public void beUsed(int x){ //判斷是否已存在該頁號,若存在,刪除已有的 for(int i=0;i<currentSize;i++){ if(theArray[i]==x){ for(int j=i;j<currentSize-1;j++){ theArray[j]=theArray[j+1]; } currentSize--; back--; } } } public static void main(String[] args) { LRU lru=new LRU(); int a[]={4,7,0,7,1,0,1,2,1,2,6}; lru.queue(a); } }