首次适应算法.docx

上传人:b****8 文档编号:9578765 上传时间:2023-02-05 格式:DOCX 页数:14 大小:16.80KB
下载 相关 举报
首次适应算法.docx_第1页
第1页 / 共14页
首次适应算法.docx_第2页
第2页 / 共14页
首次适应算法.docx_第3页
第3页 / 共14页
首次适应算法.docx_第4页
第4页 / 共14页
首次适应算法.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

首次适应算法.docx

《首次适应算法.docx》由会员分享,可在线阅读,更多相关《首次适应算法.docx(14页珍藏版)》请在冰豆网上搜索。

首次适应算法.docx

首次适应算法

首次适应算法

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模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1