用c语言实现最佳适应算法与最坏适应算法
时间: 2023-07-26 09:18:06 浏览: 87
最佳适应算法的实现:
```
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 1024
struct block {
int size; // 内存块大小
int start; // 内存块起始地址
int end; // 内存块结束地址
};
int main()
{
int mem_size, n, i, j, min, flag, size;
struct block mem[MAX_SIZE];
printf("请输入内存大小:");
scanf("%d", &mem_size);
mem[0].size = mem_size;
mem[0].start = 0;
mem[0].end = mem_size - 1;
printf("请输入作业数量:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("请输入作业%d的大小:", i);
scanf("%d", &size);
flag = 0; // 标记是否找到了空闲块
min = mem_size + 1; // 最小空闲块大小初始化为内存大小+1
for (j = 0; j <= i - 1; j++) {
if (mem[j].size >= size && mem[j].size < min) {
min = mem[j].size;
flag = 1;
}
}
if (flag) {
printf("作业%d放置到了[%d, %d]区间\n", i, mem[j].start, mem[j].start + size - 1);
mem[j].size -= size;
mem[j].start += size;
}
else {
printf("作业%d无法放置\n", i);
}
}
return 0;
}
```
最坏适应算法的实现:
```
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 1024
struct block {
int size; // 内存块大小
int start; // 内存块起始地址
int end; // 内存块结束地址
};
int main()
{
int mem_size, n, i, j, max, flag, size;
struct block mem[MAX_SIZE];
printf("请输入内存大小:");
scanf("%d", &mem_size);
mem[0].size = mem_size;
mem[0].start = 0;
mem[0].end = mem_size - 1;
printf("请输入作业数量:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("请输入作业%d的大小:", i);
scanf("%d", &size);
flag = 0; // 标记是否找到了空闲块
max = -1; // 最大空闲块大小初始化为-1
for (j = 0; j <= i - 1; j++) {
if (mem[j].size >= size && mem[j].size > max) {
max = mem[j].size;
flag = 1;
}
}
if (flag) {
printf("作业%d放置到了[%d, %d]区间\n", i, mem[j].start, mem[j].start + size - 1);
mem[j].size -= size;
mem[j].start += size;
}
else {
printf("作业%d无法放置\n", i);
}
}
return 0;
}
```
阅读全文