关于最坏适应算法c语言(最坏适应算法缺点)话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些最坏适应算法c语言(最坏适应算法缺点)内容,让我们一起了解一些技术吧!
本篇文章给大家谈谈最坏适应算法c语言,以及最坏适应算法缺点对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、最坏适应算法 c语言
2、c语言,编程 算法 最坏情况下的时间复杂度可以与平均情况的时间复杂度相
3、C++ 最坏适应算法原代码
最坏适应算法 c语言
/**——————————————————
进入程序后可以根据菜单选项进入不同的模块
1.使用首次适应算法分配空间
2.使用最佳适应算法分配空间
3.释放一块空间
4.显示内存分配情况
5.退出系统
———————————————————-**/
#include stdio.h
#include stdlib.h
#include string.h
#include conio.h
#define MEMSIZE 100 /*定义内存大小为100*/
#define MINSIZE 2 /*如果小于此值 将不再分割内存*/
typedef struct _MemoryInfomation{/* 内存空间分区表 结构*/
int start; /*起始地址*/
int size; /*大小*/
char info; /*状态 F:空闲(Free) U:占用(Used) E 结束(end)*/
}MEMINFO;
MEMINFO MemList[MEMSIZE]; //内存空间信息表
void Display();
/*——————————————————–
函数名:InitALL()
功 能:初始化所有变量
——————————————————–*/
void InitAll(){
int i;
MEMINFO temp={0,0,’e’};
for(i=0;iMEMSIZE;i++) //初始化空间信息表
MemList[i]=temp;
MemList[0].start=0; //起始地址为0
MemList[0].size=MEMSIZE;//空间初始为最大的
MemList[0].info=’f’; //状态为空闲
}
/*——————————————————–
函数名:FirstFit_new()
功 能:首次适应算法分配内存
——————————————————–*/
void FirstFit_new(){
int i,j,size;
char temp[10];
printf(“FirstFit_new:How many MEMORY requir?”);
gets(temp);
size=atoi(temp); //将字符串转化为整数
for(i=0; i MEMSIZE-1 MemList[i].info != ‘e’;i++) //到了空间尾且没有空间分配
{
if(MemList[i].size = size MemList[i].info==’f’) //满足所需要的大小,且是空闲空间
{
if(MemList[i].size – size = MINSIZE) //如果小于规定的最小差则将整个空间分配出去
MemList[i].info=’u’; //标志为使用
else
{
for(j = MEMSIZE-2; j i; j–) //将i后的信息表元素后移
{
MemList[j+1]=MemList[j];
}
//将i分成两部分,使用低地址部分
MemList[i+1].start= MemList[i].start+size;
MemList[i+1].size = MemList[i].size-size;
MemList[i+1].info=’f’;
MemList[i].size=size;
MemList[i].info=’u’;
}
break;
}
}
if(i == MEMSIZE-1 || MemList[i].info==’e’) //没有找到符合分配的空间
{
printf(“Not Enough Memory!!
”);
getchar();
}
Display();
}
/*——————————————————–
函数名:BestFit_new()
功 能:最佳适应算法分配内存
——————————————————–*/
void BestFit_new()
{
int i,j,k,flag,size;
char temp[10];
printf(“BestFit_new How many MEMORY requir?”);
gets(temp);
size=atoi(temp); //将字符串转化为整数
j=0;
flag=0; //标志是否有合适的空间分配,0无,1有
k=MEMSIZE; //用来保存满足要求的最小空间
for(i=0;iMEMSIZE-1 MemList[i].info!=’e’;i++)
{
if(MemList[i].size = size MemList[i].info == ‘f’) //符合要求
{
flag=1;
if(MemList[i].size k) //比符合要求的最小空间小,则交换
{
k=MemList[i].size;
j=i;
}
}
}
i=j;
if(flag == 0) //没找到
{
printf(“Not Enough Memory!
”);
getch();
j=i;
}
else if(MemList[i].size – size = MINSIZE) //小于规定的最小差,将整个空间分配
MemList[i].info=’u’;
else
{
for(j = MEMSIZE-2; j i; j–) //后移
MemList[j+1]=MemList[j];
MemList[i+1].start=MemList[i].start+size;
MemList[i+1].size=MemList[i].size-size;
MemList[i+1].info=’f’;
MemList[i].size=size;
MemList[i].info=’u’;
}
Display();
}
/*——————————————————–
最坏适应算法
*/
void BadFit_new()
{
int i,j,k,flag,size;
char temp[10];
printf(“BadFit_new How many MEMORY requir?”);
gets(temp);
size=atoi(temp);
j=0;
flag=0;
k=0; //保存满足要求的最大空间
for(i=0;iMEMSIZE-1MemList[i].info!=’e’;i++)
{
if(MemList[i].size=sizeMemList[i].info==’f’)
{
flag=1;
if(MemList[i].sizek)
{
k=MemList[i].size;
j=i;
}
}
}
i=j;
if(flag=0)
{
printf(“Not Enough Memory!
”);
getch();
j=i;
}
else if(MemList[i].size-size=MINSIZE)
MemList[i].info=’u’;
else
{
for(j=MEMSIZE-2;ji;j–)
MemList[j+1]=MemList[j];
MemList[i+1].start=MemList[i].start+size;
MemList[i+1].size=MemList[i].size-size;
MemList[i+1].info=’f’;
MemList[i].size=size;
MemList[i].info=’u’;
}
Display();
}
/*——————————————————–
函数名:del()
功 能:释放一块内存
——————————————————–*/
void del()
{
int i,number;
char temp[10];
printf(“
please input the NUMBER you want stop:”);
gets(temp);
number=atoi(temp);
if(MemList[number].info == ‘u’) //输入的空间是使用的
{
MemList[number].info = ‘f’; //标志为空闲
if(MemList[number+1].info == ‘f’) //右空间为空则合并
{
MemList[number].size+=MemList[number+1].size; //大小合并
for(i=number+1;i MEMSIZE-1 MemList[i].info !=’e’;i++)/* i后的空间信息表元素前移 */
if(i0)
MemList[i]=MemList[i+1];
}
if(number 0 MemList[number-1].info==’f’) //左空间空闲则合并
{
MemList[number-1].size+=MemList[number].size;
for(i=number;iMEMSIZE-1MemList[i].info!=’e’;i++)
MemList[i]=MemList[i+1];
}
}
else
{
printf(“Thist Number is Not exist or is Not used!
”);
getchar();
}
Display();
}
/*——————————————————–
函数名:Display()
功 能:显示内存状态
——————————————————–*/
void Display(){
int i,
used=0; //记录可以使用的总空间量
/* clrscr();*/
printf(“
———————————————-
”);
printf(“%5s%15s%15s”,”Number”,”start”,”size”,”Info”);
printf(“
———————————————-
”);
for(i=0;i MEMSIZE MemList[i].info != ‘e’;i++)
{
if(MemList[i].info == ‘u’)
used+=MemList[i].size;
printf(“%5d%15d%15d%15s
”,i,MemList[i].start,MemList[i].size,MemList[i].info==’u’?”USED”:”FREE”);
}
printf(“
———————————————-
”);
printf(“Totalsize:%-10d Used:%-10d Free:%-10d
”,MEMSIZE,used,MEMSIZE-used);
printf(“
Press Any Key to return…”);
getch();
}
/*——————————————————–
函数名:main()
功 能:主函数
——————————————————–*/
void main(){
char ch;
InitAll();
while(1){
printf(“========================================================
”);
printf(” 1.Get a block use the FISTFIT method
”);
printf(” 2.Get a block use the BESTFIT method
”);
printf(” 3.Get a block use the BadFIT method
”);
printf(” 4.Free a block
”);
printf(” 5.Display Mem info
”);
printf(” 6.Exit
”);
printf(“========================================================
”);
ch=getch();
switch(ch){
case ‘1’:FirstFit_new();break; //首次适应算法
case ‘2’:BestFit_new();break; //最佳适应算法
case ‘3’:BadFit_new();break; //最坏适应算法
case ‘4’:del();break; //删除已经使用完毕的空间
case ‘5’:Display();break; //显示内存分配情况
case ‘6’:exit(0);
}
}
}
c语言,编程 算法 最坏情况下的时间复杂度可以与平均情况的时间复杂度相
最差情况下的复杂度是所有可能的输入数据所消耗的最大资源,如果最差情况下的复杂度符合我们的要求,我们就可以保证所有的情况下都不会有问题。
某些算法经常遇到最差情况。比如一个查找算法,经常需要查找一个不存在的值。
也许你觉得平均情况下的复杂度更吸引你,可是平均情况也有几点问题。第一,难计算,多数算法的最差情况下的复杂度要比平均情况下的容易计算的多,第二,有很多算法的平均情况和最差情况的复杂度是一样的. 第三,什么才是真正的平均情况?如果你假设所有可能的输入数据出现的概率是一样的话,也是不合理的。其实多数情况是不一样的。而且输入数据的分布函数很可能是你没法知道。
考虑最好情况的复杂度更是没有意义。几乎所有的算法你都可以稍微修改一下,以获得很好的最好情况下的复杂度(要看输入数据的结构,可以是O(1))。怎样修改呢? 预先计算好某一输入的答案,在算法的开始部分判断输入,如果符合,给出答案。
C++ 最坏适应算法原代码
考的是内存的动态划分区域内容,很好写啊
1.可以用数字来模拟内存区域划分情况,比如建一个100大小的数组(结构为struc (区号,值),值为0表示空闲,值为1表示占用,初始化几个已确定占有的分区,分区一,1-5 占有,6-12 空闲,。。。。。。。,并建立空闲区域表,很简单,从头到尾对数组扫描下就知道了
2.最先适应:从内存开始地址找到第一个大于请求大小的连续空闲区域,如请求5个空间,那就在刚开始6-12空闲处建立分区二 ,6-11 ,占用
3.最佳适应:指所有空闲块最适应请求大小的那块,min(空闲块大小-请求大小)
4.最坏:指适应请求大小,且最大的那块空闲区域
最坏适应算法c语言的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于最坏适应算法缺点、最坏适应算法c语言的信息别忘了在本站进行查找喔。
以上是嗨壳技术分享网(www.heikehao.com)小编对“ 最坏适应算法c语言(最坏适应算法缺点) ”的详细解答,希望能够帮助到大家。
原创文章,作者:语言我知,如若转载,请注明出处:https://www.heikehao.com/10751.html