guofuanqilala
2019-12-16 22:05
采纳率: 0%
浏览 417

OPT算法的具体代码解释以及LRU算法及其调用的MyStack栈的具体解释的问题?

主要是在OPT算法中的超出容量list的部分存在问题

    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
我在LRU算法的代码解释以及该程序调用的MyStack中也存在问题,请大佬们给我具体解释,最好有每一句代码的解释,我不懂的不是这些算法的原理,而是整个运算的代码过程,感谢了!

1条回答 默认 最新

相关推荐 更多相似问题