1. 程式人生 > >JAVA實現頁面置換演算法——LRU演算法

JAVA實現頁面置換演算法——LRU演算法

理解演算法才能實現演算法,要不然就和我一樣無從下手,抓破頭皮也沒用!!!

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));
	}
}

可能有很多問題,歡迎大佬指正。