首次适应算法.docx
- 文档编号:9578765
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:14
- 大小:16.80KB
首次适应算法.docx
《首次适应算法.docx》由会员分享,可在线阅读,更多相关《首次适应算法.docx(14页珍藏版)》请在冰豆网上搜索。
首次适应算法
首次适应算法
importjava.util.Scanner;
classFreearea{
intstadd;//起始地址
intsize;//分区大小
intstate;//空闲区状态,0为空分区,1表示空闲分区
publicFreearea(intestadd,intesize,intestate){
stadd=estadd;
size=esize;
state=estate;
}
publicstaticvoidmain(String[]args){
Freeareah[]={newFreearea(20,20,1),newFreearea(80,50,1),newFreearea(300,30,0),
newFreearea(600,100,1),newFreearea(700,200,1)};
System.out.println("空闲分区表如下图所示");
System.out.println("首地址空间大小状态");
for(inti=0;i<5;i++){
System.out.println("第"+(i+1)+"块"+""+h[i].stadd+""+h[i].size+""+h[i].state);
}
System.out.println("请输入所要申请的空间大小");
Scanners=newScanner(System.in);
intapply=s.nextInt();
for(inti=0;i if(i if(h[i].state==1&&h[i].size>apply){ intt=h[i].stadd; h[i].stadd=h[i].stadd+apply; h[i].size=h[i].size-apply; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[i].stadd); break; } elseif(h[i].state==1&&h[i].size==apply){ h[i].state=0; intp=h[i].stadd+apply; System.out.println("这个文件起始地址为"+h[i].stadd); System.out.println("这个文件的终止地址为"+p); break; } } else{ if(h[i].state==1&&h[i].size>apply){ intt=h[i].stadd; h[i].stadd=h[i].stadd+apply; h[i].size=h[i].size-apply; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[i].stadd); break; } elseif(h[i].state==1&&h[i].size==apply){ h[i].state=0; intp=h[i].stadd+apply; System.out.println("这个文件起始地址为"+h[i].stadd); System.out.println("这个文件的终止地址为"+p); break; } System.out.println("这个文件不能被分配"); } } System.out.println("请再次输入所要申请的空间大小"); Scannerm=newScanner(System.in); intappl=m.nextInt(); for(inti=0;i if(i if(h[i].state==1&&h[i].size>appl){ intt=h[i].stadd; h[i].stadd=h[i].stadd+appl; h[i].size=h[i].size-appl; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[i].stadd); break; } elseif(h[i].state==1&&h[i].size==appl){ h[i].state=0; intp=h[i].stadd+appl; System.out.println("这个文件起始地址为"+h[i].stadd); System.out.println("这个文件的终止地址为"+p); break; } } else{ if(h[i].state==1&&h[i].size>appl){ intt=h[i].stadd; h[i].stadd=h[i].stadd+appl; h[i].size=h[i].size-appl; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[i].stadd); break; } elseif(h[i].state==1&&h[i].size==appl){ h[i].state=0; intp=h[i].stadd+appl; System.out.println("这个文件起始地址为"+h[i].stadd); System.out.println("这个文件的终止地址为"+p); break; } System.out.println("这个文件不能被分配"); } } } 运行结果: 空闲分区表如下图所示 首地址空间大小状态 第1块20201 第2块80501 第3块300300 第4块6001001 第5块7002001 请输入所要申请的空间大小 40 这个文件的起始地址为80 这个文件的终止地址为120 请再次输入所要申请的空间大小 20 这个文件起始地址为20 这个文件的终止地址为40 循环适应算法 importjava.util.Scanner; classFreearea{ intstadd;//起始地址 intsize;//分区大小 intstate;//空闲区状态,0为空分区,1表示空闲分区 publicFreearea(intestadd,intesize,intestate){ stadd=estadd; size=esize; state=estate; } publicstaticvoidmain(String[]args){ Freeareah[]={newFreearea(20,20,1),newFreearea(80,50,1),newFreearea(300,30,0), newFreearea(600,100,1),newFreearea(700,200,1)}; System.out.println("空闲分区表如下图所示"); System.out.println("首地址空间大小状态"); for(inti=0;i<5;i++){ System.out.println("第"+(i+1)+"块"+""+h[i].stadd+""+h[i].size+""+h[i].state); } System.out.println("请输入所要申请的空间大小"); Scanners=newScanner(System.in); intapply=s.nextInt(); inti; for(i=0;i if(i if(h[i].state==1&&h[i].size>apply){ intt=h[i].stadd; h[i].stadd=h[i].stadd+apply; h[i].size=h[i].size-apply; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[i].stadd); break; } elseif(h[i].state==1&&h[i].size==apply){ h[i].state=0; intp=h[i].stadd+apply; System.out.println("这个文件起始地址为"+h[i].stadd); System.out.println("这个文件的终止地址为"+p); break; } } else{ if(h[i].state==1&&h[i].size>apply){ intt=h[i].stadd; h[i].stadd=h[i].stadd+apply; h[i].size=h[i].size-apply; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[i].stadd); break; } elseif(h[i].state==1&&h[i].size==apply){ h[i].state=0; intp=h[i].stadd+apply; System.out.println("这个文件起始地址为"+h[i].stadd); System.out.println("这个文件的终止地址为"+p); break; } System.out.println("这个文件不能被分配"); } } inttag=0; System.out.println("请再次输入所要申请的空间大小"); Scannerm=newScanner(System.in); intappl=m.nextInt(); for(intj=i;j if(h[j].state==1&&h[j].size>appl){ intt=h[j].stadd; h[j].stadd=h[j].stadd+appl; h[j].size=h[j].size-appl; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[j].stadd); tag=tag+1; break; } elseif(h[j].state==1&&h[j].size==appl){ intp=h[j].stadd+appl; System.out.println("这个文件起始地址为"+h[j].stadd); System.out.println("这个文件的终止地址为"+p); tag=tag+1; break; } } if(tag==0){ for(intk=0;k if(k if(h[k].state==1&&h[k].size>appl){ intt=h[k].stadd; h[k].stadd=h[k].stadd+appl; h[k].size=h[k].size-appl; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[k].stadd); break; } elseif(h[k].state==1&&h[k].size==appl){ h[k].state=0; intp=h[k].stadd+appl; System.out.println("这个文件起始地址为"+h[k].stadd); System.out.println("这个文件的终止地址为"+p); break; } } else{ if(h[k].state==1&&h[k].size>appl){ intt=h[k].stadd; h[k].stadd=h[k].stadd+appl; h[k].size=h[k].size-appl; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[i].stadd); break; } elseif(h[k].state==1&&h[k].size==appl){ h[k].state=0; intp=h[k].stadd+appl; System.out.println("这个文件起始地址为"+h[k].stadd); System.out.println("这个文件的终止地址为"+p); break; } System.out.println("这个文件不能被分配"); } } } } } 空闲分区表如下图所示 首地址空间大小状态 第1块20201 第2块80501 第3块300300 第4块6001001 第5块7002001 请输入所要申请的空间大小 180 这个文件的起始地址为700 这个文件的终止地址为880 请再次输入所要申请的空间大小 30 这个文件的起始地址为80 这个文件的终止地址为110 最佳适应算法 importjava.util.Scanner; classFreearea{ intstadd;//起始地址 intsize;//分区大小 intstate;//空闲区状态,0为空分区,1表示空闲分区 publicFreearea(intestadd,intesize,intestate){ stadd=estadd; size=esize; state=estate; } publicstaticvoidmain(String[]args){ Freeareah[]={newFreearea(20,20,1),newFreearea(80,50,1),newFreearea(300,30,0), newFreearea(600,100,1),newFreearea(700,200,1)}; System.out.println("空闲分区表如下图所示"); System.out.println("首地址空间大小状态"); for(inti=0;i<5;i++){ System.out.println("第"+(i+1)+"块"+""+h[i].stadd+""+h[i].size+""+h[i].state); } System.out.println("请输入所要申请的空间大小"); Scanners=newScanner(System.in); intapply=s.nextInt(); inta[]=newint[5]; for(inti=0;i if(h[i].state==1&&h[i].size>=apply){ a[i]=h[i].size-apply; } else{a[i]=10000;} } inti; for(i=0;i if(a[i]<=a[0]&&a[i]<=a[1]&&a[i]<=a[2]&&a[i]<=a[3]&&a[i]<=a[4]){ System.out.println("这个申请与其差值最小为"+a[i]); intt=h[i].stadd; h[i].stadd=h[i].stadd+apply; h[i].size=h[i].size-apply; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[i].stadd); break; } } System.out.println("请再次输入申请的空间大小"); Scannerm=newScanner(System.in); intappl=m.nextInt(); for(i=0;i if(h[i].state==1&&h[i].size>=appl){ a[i]=h[i].size-appl; } else{a[i]=10000;} } for(i=0;i if(a[i]<=a[0]&&a[i]<=a[1]&&a[i]<=a[2]&&a[i]<=a[3]&&a[i]<=a[4]){ System.out.println("这个申请与其差值最小为"+a[i]); intt=h[i].stadd; h[i].stadd=h[i].stadd+appl; h[i].size=h[i].size-appl; System.out.println("这个文件的起始地址为"+t); System.out.println("这个文件的终止地址为"+h[i].stadd); break; } } } } 空闲分区表如下图所示 首地址空间大小状态 第1块20201 第2块80501 第3块300300 第4块6001001 第5块7002001 请输入所要申请的空间大小 180 这个申请与其差值最小为20 这个文件的起始地址为700 这个文件的终止地址为880 请再次输入申请的空间大小 20 这个申请与其差值最小为0 这个文件的起始地址为20 这个文件的终止地址为40
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 首次 适应 算法