使用了java.util.Comparator
這是一個SSTF算法工作尋道時間優先算法是我到目前爲止有:最短使用比較
private int nextHeadPosition;
public SSTF(int currentHeadPosition) {
nextHeadPosition = currentHeadPosition;
}
@Override
public int compare(DiskRequest r1, DiskRequest r2) {
if (nextHeadPosition - r1.getTrackNumber() < nextHeadPosition - r2.getTrackNumber()) {
nextHeadPosition = r1.getTrackNumber();
return -1;
} else if (nextHeadPosition - r1.getTrackNumber() > nextHeadPosition - r2.getTrackNumber()) {
nextHeadPosition = r2.getTrackNumber();
return 1;
} else {
return 0;
}
}
與50初始頭部位置是生產這種順序:
[100, 99, 50, 45, 44, 1]
我試圖輸出端產生:
[50, 45, 44, 1, 99, 100]
這可能不是對具有跟蹤號碼,第一個請求被服務將是最接近軌道的請求隊列是更多鈔票與比較
編輯
-STF
頭部的當前位置。每個後續請求將按照最後一個請求的位置距離最近的順序排列。
所以對於帶有軌跡[100, 99, 50, 45, 44, 1]
並且當前頭位置爲50的隊列,第一請求將是50.下一個將是最接近50的軌跡,在這種情況下是45。泡沫沖洗重複。
我不明白你的問題 – 2013-04-26 15:27:45
你期望得到什麼?這裏有什麼問題? – Shark 2013-04-26 15:27:50
你的表達'nextHeadPosition - rw.getTrackNumber()'沒有任何意義。如果你想比較兩個領域,你必須獨立完成。 – 2013-04-26 15:27:51