上课讲的一道例题,老师叫用语言将算法实现出来,这里分享下自己的思路,希望对你们有帮助,不懂可以在评论区评论,我也会为大家解答!
下面直接上代码 ^ _ ^
代码部分
import java.util.ArrayList;
import java.util.List;
public class Homework {
private List wulikuai = new ArrayList(3);//创建一个长度为3的集合,其功能相当于有三个物理块
private Integer count = 0;//用于统计没有缺页的数量
/** 将访问页添加到物理块中 **/
private List put(Integer data){
//判断物理块里面的数据是否大于三个
if (wulikuai.size() < 3){//物理块长度小于三时,直接向里面添加数据
//判断当前数据是否在物理块中已经存在
for(int i = 0;i < wulikuai.size();i++) {
if (wulikuai.get(i) == data) { //存在的情况,当前数据存在物理块中,表示没有中断
System.out.print("这个没有中断----");
count++;//计数加1
return wulikuai;//直接返回原来的物理块,不做任何处理
}
}
wulikuai.add(data);//不在在情况下,将形式参数的值添加到物理块集合中
}else {//当物理块大于3时
for(int i = 0;i < wulikuai.size();i++) {
if (wulikuai.get(i) == data) {//存在,当前数据存在物理块中,表示没有中断
System.out.print("这个没有中断----");
count++;//计数加1
return wulikuai;//直接返回原来的物理块,不做任何处理
}
}
wulikuai.remove(0);//将物理块集合首个元素移除
wulikuai.add(data);//将新的添加到末尾
}
return wulikuai;//返回物理块
}
public static void main(String[] args) {
//创建一个数组保存访问页顺序
Integer[] data = {1,2,3,4,1,2,5,1,2,3,4,5};//上课照片例题数据集
// Integer[] data = {1,2,1,0,4,1,3,4,2,1,4,1};//书 P109例题4-9数据集
// Integer[] data = {1,2,3,4,1,2,5,1,2,3,4,5,6};//书 P115第10题数据集
//将上面数组中的元素放入到物理块中
Homework h = new Homework();
//循环,一个一个的放入物理块中
for(int i = 0;i < data.length;i++) {
System.out.println(data[i]+"------>"+h.put(data[i]));//通过实参传递到上面一个方法中
}
System.out.println("-------------------------------");
System.out.println("访问顺序总的次数为:"+data.length);
System.out.println("总共有"+h.count+"次没有缺页中断");
//所以中断次数为 :
int zd = data.length - h.count;
System.out.println("所以有"+zd+"次缺页中断");
}
}
运行结果