JAVA實現頁面置換演算法——LRU演算法
阿新 • • 發佈:2019-02-02
理解演算法才能實現演算法,要不然就和我一樣無從下手,抓破頭皮也沒用!!!
import 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<Integer> al=new ArrayList<Integer>(); 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<times;i++){ al.add(Integer.parseInt(sarr[i])); } System.out.println("請輸入容量:"); cap=in.nextInt(); run(); } public void run(){ LinkedList<Integer> ll=new LinkedList<Integer>(); for(int i=0;i<times;i++){ int t=al.get(i); if(!ll.contains(t)){ fail++; if(ll.size()<cap) ll.addLast(t); else{ ll.removeFirst(); ll.addLast(t); } } else{ ll.remove((Integer)t); ll.addLast(t); } System.out.print("第"+(i+1)+"次 :"); Iterator<Integer> it=ll.iterator(); while(it.hasNext()){ Integer itg=it.next(); System.out.print(itg+" "); } System.out.println(); } System.out.println("命中率:"+(1-(float)fail/times)); } }
可能有很多問題,歡迎大佬指正。