guofuanqilala 2019-12-16 21:50 采纳率: 0%
浏览 233

页面置换算法的OPT算法的具体代码解释看不懂,主要问题是 在超出list容量之后的部分,以及LRU算法及其调用的MyStack栈的具体解释?????

public class OPT {
    private final int capacity = 3;// 构造一个初始容量为3的空列表
    private int[] index = new int[2];//申请数组下标的容量为2 
    private List<Integer> list = new ArrayList<Integer>(capacity);//定义一个有界阻塞容器capacity即队列
    public OPT(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (list.size() < capacity) { // 小于list初始容量
                if (!list.contains(arr[i])) { // list没有该页面,将其添加进list尾部
                    list.add(arr[i]);//列表+1
                } else {
                    continue;


                }
            } else {// 超出list容量
                index[0] = 100;
                index[1] = 101;
                if (!list.contains(arr[i])) { // 下一个页面如果不在list中
                    int a = 0;
                    for (int j = i; j < arr.length; j++) {
                        if (list.contains(arr[j])) { // arr[j]这个页面会在测试数据中会出现较早
                            if (index[0] != list.indexOf(arr[j])) {
                                //indexOf()的用法:查找arr[j]中,第一次出现指定字符串的位置。  位置不是下标为0
                                index[a++] = list.indexOf(arr[j]);// 返回此列表中首次出现的指定元素的索引
                                if (a == 2) {
                                    break;
                                }
                            }
                        }
                    }
                    list.set(noExist(), arr[i]);// 置换掉永不使用的,或许在最长时间内不再访问的页面
                } else { // 下一个页面在list中
                    continue;//列表保持不变
                }
            }
            traverse();//调用traverse函数
        }
        System.out.println("访问页面需从外存调入的次数为:"+(num-1));//计算访问页面需要从外存调入的次数
        System.out.println("缺页率为:"+(1-(float)(num-1)/arr.length));//计算缺页率
    }

https://blog.csdn.net/AdvancingStone/article/details/79110586

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2019-12-17 00:13
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制