1. 程式人生 > >JAVA實現頁面置換演算法——FIFO演算法

JAVA實現頁面置換演算法——FIFO演算法

有點遺憾,自己沒有獨立寫出來,實在沒有想到用Map來裝資料,而且對Queue理解太生疏了。

看來自己學的東西還是不怎麼熟練。。

其實最主要的是對FIFO演算法比較陌生,沒有思路。如果有和我一樣沒有思路的同學可以看一下FIFO原理!

import java.util.*;
import java.io.*;

public class Main{
	public static void main(String args []){
		FIFOmethod fm=new FIFOmethod();
	}
}

class FIFOmethod{
	int times;
	int fail;
	int cap;
	ArrayList<Integer> al=new ArrayList<Integer>();
	Map<Integer,Integer> mp=new HashMap<Integer,Integer>();  //使用Map可以方便替換元素,當key一樣時,會覆蓋value的值。
	public FIFOmethod(){
		Scanner in=new Scanner(System.in);
		fail=0;
		System.out.println("請輸入使用者指令:");
		String s=in.nextLine();
		String sarr[]=s.split(" ");
		times=sarr.length;
		for(int i=0;i<times;i++){
			al.add(Integer.parseInt(sarr[i]));
		}
		System.out.println("請輸入容量:");
		cap=in.nextInt();
		run();
	}
	
	public void run(){
		Queue<Integer> q=new LinkedList<Integer>();
		for(int i=0;i<times;i++){
			int t=al.get(i);
			if(!mp.containsValue(t)){
				fail++;
				if(mp.size()<cap){
					int tmp=mp.size();
					mp.put(tmp, t);
					q.offer(tmp);
				}
				else{
					int tmp=q.poll();
					mp.remove(tmp);
					mp.put(tmp, t);
					q.offer(tmp);
				}
			}
			System.out.print("第"+(i+1)+"次 :");
			Set<Map.Entry<Integer, Integer>> st=mp.entrySet();
			Iterator<Map.Entry<Integer, Integer>> it=st.iterator();
			while(it.hasNext()){
				Map.Entry<Integer, Integer> me=it.next();
				System.out.print(me.getValue()+" ");
			}
			System.out.println();
		}
		System.out.println("命中率:"+(1-(float)fail/times));
	}
}
做個筆記。

相關推薦

JAVA實現頁面置換演算法——FIFO演算法

有點遺憾,自己沒有獨立寫出來,實在沒有想到用Map來裝資料,而且對Queue理解太生疏了。看來自己學的東西還是不怎麼熟練。。其實最主要的是對FIFO演算法比較陌生,沒有思路。如果有和我一樣沒有思路的同學可以看一下FIFO原理!import java.util.*; impor

JAVA實現頁面置換演算法——LRU演算法

理解演算法才能實現演算法,要不然就和我一樣無從下手,抓破頭皮也沒用!!!import java.util.*; import java.io.*; public class Main{ public

Java實現資料統計的常用演算法

求和、平均值、眾數、中位數、中列數、四分位數、極差、四分位數、截斷均值、方差、絕對平均差(AAD)、中位數絕對偏差、標準差 的數學方法 package cn.javacodes.utils; import java.util.Arrays; import java.util.HashMap;

使用Java實現K-Means聚類演算法

第一次寫部落格,隨便寫寫。 關於K-Means介紹很多,還不清楚可以查一些相關資料。 個人對其實現步驟簡單總結為4步: 1.選出k值,隨機出k個起始質心點。  2.分別計算每個點和k個起始質點之間的距離,就近歸類。  3.最終中心點集可以劃分為k類,

java 實現傅立葉變換演算法 及複數的運算

最近專案需求,需要把python中的演算法移植到java上,其中有一部分需要用到複數的運算和傅立葉變換演算法,廢話不多說 如下: package qrs; /** * 複數的運算 * */ public class Complex { private final double

java實現CRC16 MODBUS校驗演算法

最近做通訊開發,遇到了校驗碼的問題 我在這個網站上試了試 裡面有各種crc16的校驗碼 廢話不多說,直接上程式碼 /** * 計算CRC16校驗碼 * * @param bytes * @return

java實現笛卡爾積演算法

private static void descartes(List<List<String>> dimvalue, List<List<String>> result, int layer, List<String&g

Java實現的表示式求值演算法(包括加減乘除以及括號運算)

表示式求值演算法一、表示式求值簡單說明:1、求值表示式主要包括加減乘除四種基本運算,其實表示式可以看做由一個個二元運算構成,前一個二元運算的結果作為後一個二元運算的輸入。        舉個例子: “1+2-4=”,“1+2”就是一個二元運算,1和2是運算元,+是運算子,它們

java實現四種常用排序演算法

四種常用排序演算法 ##注:從小到大排 ##氣泡排序## 特點:效率低,實現簡單 思想:每一趟將待排序序列中最大元素移到最後,剩下的為新的待排序序列,重複上述步驟直到排完所有元素。這只是氣泡排序的一種,

如何用Java實現NLP的經典關鍵詞演算法 TF-IDF

面對一篇文章,我們如何提取他的關鍵詞呢。如果是我們自己去提取,那隻需要讀一遍,然後大腦中就會有一定的印象了,但是對於計算機來說,他沒有人那樣的思考能力啊,那怎麼辦,只能依靠演算法了。今天分享的內容呢是如何用Java語言實現NLP(自然語言處理)領域中一個非常著名

關於Java實現樸素貝葉斯演算法

package naiveBayesian; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStr

java實現——8硬幣問題(演算法

程式碼看著有點亂,有點複雜!單步除錯一下其實不復雜!當然前提是要搞清楚演算法的思想! package yxd.sf.eightcoins; public class EightCoins { public static int compareTo(int[] coi

Java實現的希爾排序演算法

一:希爾排序演算法基本思想希爾排序(Shell's Sort)是插入排序的一種又稱“縮小增量排序”(Diminishing Increment Sort),是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因D.L.Shell於1959年提出而得名

Java實現一部分簡單的排序演算法和資料結構(學習筆記20171022002)

參考網路資料,複習用Java實現排序演算法:氣泡排序、直接選擇排序、直接插入排序、快速排序。資料結構:單鏈表、棧。 一眼就看明白的程式碼就把註釋省略了。 package sort; import java.lang.reflect.Array; import java.

Java實現 二叉搜尋樹演算法(BST)

一、樹 & 二叉樹 樹是由節點和邊構成,儲存元素的集合。節點分根節點、父節點和子節點的概念。 如圖:樹深=4; 5是根節點;同樣8與3的關係是父子節點關係。 二叉樹binary tree,則加了“二叉”(binary),意思是在樹中作區分。每個節點至多有兩個子(

Java實現緩存(LRU,FIFO)

tro 減少 需求 返回 city 存在 move sed 未使用 吹吹牛逼,曬曬太陽。不如來寫點東西,哈哈哈哈哈。。。。今天來說說,如何用java實現緩存,這個話題很多面試的也會被問到。今天就來說說。 1.為什麽要java實現緩存的? 由於目前軟件或網頁的並發量增加很大,

ajax+js+java實現頁面下拉框聯動

jsp程式碼: <%-- 第一級下拉 --%> <select id="channelId"  onchange="getChlProduct()" name="channelId" style="width:100px" > <option

作業系統- 實驗四 模擬FIFO頁面置換演算法Java實現

                                          &

java實現FIFO和LRU頁面置換演算法

   FIFO是記憶體管理的一種頁面置換演算法,FIFO(First Input First Output),即先進先出佇列。例:在超市購物之後會提著我們滿滿的購物車來到收銀臺排在結賬隊伍的最後,眼睜睜地看著前面的客戶一個個離開。這就是一種先進先出機制,先排隊的客戶先行結

請求頁式儲存管理中頁面置換演算法java實現

        儲存管理的主要功能之一是合理地分配空間。請求頁式管理是一種常用的虛擬儲存管理技術。         模擬頁式虛擬儲存管理中硬體的地址轉換和缺頁中斷,並用先進先出排程演算法(FIFO)處理缺頁中斷。 &nb