操作系统LRU算法(最近最少使用算法)
提交代码
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
public class Main {
public Main() {
}
static void upData(HashMap<Integer, Integer> map, int num) {
Iterator var2 = map.keySet().iterator();
while(var2.hasNext()) {
Integer i = (Integer)var2.next();
if (num != i) {
map.put(i, (Integer)map.get(i) + 1);
}
}
}
static void delete(HashMap<Integer, Integer> map) {
Pair t = null;
boolean flag = false;
Iterator var3 = map.keySet().iterator();
while(var3.hasNext()) {
Integer i = (Integer)var3.next();
if (!flag) {
t = new Pair(i, (Integer)map.get(i));
flag = true;
} else if (t.priortiy < (Integer)map.get(i)) {
t = new Pair(i, (Integer)map.get(i));
}
}
map.remove(t.num);
}
static void Travse(HashMap<Integer, Integer> map) {
Iterator var1 = map.keySet().iterator();
while(var1.hasNext()) {
Integer i = (Integer)var1.next();
System.out.print(i + " " + map.get(i) + " || ");
}
System.out.println();
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("输入页面数:");
int numPage = in.nextInt();
System.out.println("输入内存数:");
int numMemory = in.nextInt();
System.out.println("输入内存:");
int cnt = 0;
Map<Integer, Integer> map = new HashMap();
int[] a = new int[numPage + 10];
for(int i = 0; i < numPage; ++i) {
int num = in.nextInt();
if (map.size() < numMemory) {
if (!map.containsKey(num)) {
++cnt;
}
map.put(num, 0);
upData((HashMap)map, num);
} else if (!map.containsKey(num)) {
map.put(num, 0);
upData((HashMap)map, num);
delete((HashMap)map);
++cnt;
} else {
map.put(num, 0);
upData((HashMap)map, num);
}
}
System.out.printf("F' = %.1f%%", (double)cnt / (double)numPage * 100.0D);
}
}