理解算法才能实现算法,要不然就和我一样无从下手,抓破头皮也没用!!!
LRU算法:http://flychao88.iteye.com/blog/1977653import java.util.*;
import java.io.*;
public class Main{
public static void main(String args []){
LRUmethod fm=new LRUmethod();
}
}
class LRUmethod{
int times;
int fail;
int cap;
ArrayList al=new ArrayList();
public LRUmethod(){
Scanner in=new Scanner(System.in);
fail=0;
System.out.println("请输入用户指令:");
String s=in.nextLine();
String sarr[]=s.split(" ");
times=sarr.length;
for(int i=0;i
al.add(Integer.parseInt(sarr[i]));
}
System.out.println("请输入容量:");
cap=in.nextInt();
run();
}
public void run(){
LinkedList ll=new LinkedList();
for(int i=0;i
int t=al.get(i);
if(!ll.contains(t)){
fail++;
if(ll.size()
ll.addLast(t);
else{
ll.removeFirst();
ll.addLast(t);
}
}
else{
ll.remove((Integer)t);
ll.addLast(t);
}
System.out.print("第"+(i+1)+"次 :");
Iterator it=ll.iterator();
while(it.hasNext()){
Integer itg=it.next();
System.out.print(itg+" ");
}
System.out.println();
}
System.out.println("命中率:"+(1-(float)fail/times));
}
}
可能有很多问题,欢迎大佬指正。