LRU算法的简单JavaScript实现

模拟 LRU算法的简单JavaScript实现

主要代码如下
function LRU() {
    this.dataStore = [];
   this.enqueue   = enqueue;

}
function process(id,unuse_time){
     this.id = id;
     this.unuse_time = unuse_time;
}
function enqueue(element) {
    this.dataStore.push(element);
}

//主程序
var queye_num = 0;
var q = new LRU();
var a = new Array();
//访问队列为
console.log("访问队列为:");
for(var i = 0;i<=19;i++){
    a[i]=Math.ceil(Math.random()*20);
    console.log(a[i]);
}
for(var j = 0;j<=4;j++){
    q.enqueue(new process(Math.ceil(Math.random()*20),0));
}
q.dataStore[0].unuse_time = 4;
q.dataStore[1].unuse_time = 3;
q.dataStore[2].unuse_time = 2;
q.dataStore[3].unuse_time = 1;
q.dataStore[4].unuse_time = 0;
 console.log("初始值为"+q.dataStore[0].id+" "+q.dataStore[1].id+" "+q.dataStore[2].id+" "+q.dataStore[3].id+" "+q.dataStore[4].id);
for(var k = 0;k<=19;k++){
   var compare_num = 0;

   for(var l =0;l<=4;l++){

       if(a[k]!=q.dataStore[l].id){
       compare_num++;
       q.dataStore[l].unuse_time++;
        if(compare_num==5){
        queye_num++;
        var max = q.dataStore[0].unuse_time;
        var max_loc = 0;
        for(var t = 1;t<=4;t++){
             if(max<q.dataStore[t].unuse_time){
              max = q.dataStore[t].unuse_time;
              max_loc = t;
        }
        }
        q.dataStore[max_loc].id = a[k];
        q.dataStore[max_loc].unuse_time = 0;
       }

       }
       else{
           console.log(a[k]+"命中");
           q.dataStore[l].unuse_time = 0;

       }
   }

  console.log(q.dataStore[0].id+" "+q.dataStore[1].id+" "+q.dataStore[2].id+" "+q.dataStore[3].id+" "+q.dataStore[4].id);

}
console.log("缺页率为"+queye_num/20);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值