資源簡介
FCFS、SSTF、SCAN、CSCAN
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.Text;
namespace?DiscManage
{
????class?Program
????{
????????//先來先服務算法
????????public?static?void?FCFS(int[]?array?int?m)
????????{
????????????int?sum?=?0?i?j;
????????????int?avg;
????????????int?now;
????????????Console.WriteLine(“\n?請輸入當前的磁道號:“);
????????????now?=?Convert.ToInt32(Console.ReadLine());
????????????sum?+=?Math.Abs(now?-?array[0]);
????????????Console.WriteLine(“\n?FCFS調度結果:??“);
????????????for?(i?=?0;?i?????????????{
????????????????//輸出FCFS磁盤調度結果
????????????????Console.WriteLine(“{0}??“?array[i]);
????????????}
????????????for?(i?=?0?j?=?1;?j?????????????{
????????????????//累計總的移動距離
????????????????sum?+=?Math.Abs(array[j]?-?array[i]);
????????????}
????????????//計算平均尋道長度
????????????avg?=?sum?/?m;
????????????Console.WriteLine(“\n?移動的總道數:?{0}?\n“?sum);
????????????Console.WriteLine(“?平均尋道長度:?{0}?\n“?avg);
????????}
????????//最短尋道時間優(yōu)先算法
????????public?static?void?SSTF(int[]?array?int?m)
????????{
????????????int?i?j?sum?=?0;
????????????int?k?=?1;
????????????int?now?l?r;
????????????int?temp;
????????????int?avg;
????????????//對磁道號進行從小到大排列
????????????for?(i?=?0;?i?????????????{
????????????????for?(j?=?i?+?1;?j?????????????????{
????????????????????if?(array[i]?>?array[j])
????????????????????{
????????????????????????temp?=?array[i];
????????????????????????array[i]?=?array[j];
????????????????????????array[j]?=?temp;
????????????????????}
????????????????}
????????????}
????????????Console.WriteLine(“\n?請輸入當前的磁道號:“);
????????????now?=?Convert.ToInt32(Console.ReadLine());
????????????Console.WriteLine(“\n?SSTF調度結果:??“);
????????????if?(array[m?-?1]?<=?now)
????????????{
????????????????for?(i?=?m?-?1;?i?>=?0;?i--)
????????????????????Console.WriteLine(“{0}??“?array[i]);
????????????????sum?=?now?-?array[0];
????????????}
????????????else?if?(array[0]?>=?now)
????????????{
????????????????for?(i?=?0;?i?????????????????????Console.WriteLine(“{0}??“?array[i]);
????????????????sum?=?array[m?-?1]?-?now;
????????????}
????????????else
????????????{
????????????????while?(array[k]?????????????????{
????????????????????k++;
????????????????}
????????????????l?=?k?-?1;
????????????????r?=?k;
????????????????//確定當前磁道在已排的序列中的位置
????????????????while?((l?>=?0)?&&?(r?????????????????{
????????????????????if?((now?-?array[l])?<=?(array[r]?-?now))
????????????????????{
????????????????????????Console.WriteLine(“{0}??“?array[l]);
????????????????????????sum?+=?now?-?array[l];
????????????????????????now?=?array[l];
????????????????????????l?=?l?-?1;
????????????????????}
????????????????????else
????????????????????{
????????????????????????Console.WriteLine(“{0}??“?array[r]);
????????????????????????sum?+=?array[r]?-?now;
????????????????????????now?=?array[r];
???????????????
- 上一篇:C#實現微信企業(yè)號簽到功能
- 下一篇:C#winfrom 音樂播放器源碼
評論
共有 條評論