1.LRU算法實現 最近最久未使用(螞蟻金服筆試題,本人親自經歷的[苦笑.jpg])
實現原理:數組
主要功能:初始化、入隊列
主要操作:數組元素移動
代碼:
package com.ch.evaluation.TestJava; /** * @Auther: 011336 * @Date: 2019/4/9 17:27 */ 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 { //滿了 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); } }