#include#includeusing namespace std;
#define max_free 10 //空閒區最大個數
#define max_job 10 //已分分割槽最大個數
struct table free_table[max_free], used_table[max_job];
static float size = 0; //最小切割長度
void init(table free_table, table used_table)
int s; //初始空閒分割槽個數
printf("請輸入初始空閒分割槽的個數:\n");
scanf_s("%d", &s);
for (int i = 0; i < s; i++)
printf("請輸入最小可分割長度:\n");
scanf_s("%f", &size);
printf("\n\n");
}void sort(table free_table)
}}void bf(table free_table, table used_table)
else }}
if (k == false)
printf("無可用空閒區!\n");
sort(free_table);
printf("\n\n");
}void recycle(table free_table, table used_table)
if ((used_table[i].address + used_table[i].length) == free_table[j].address && free_table[j].flag == "1")
for (int m = j + 1; m < max_free; m++)
} //end of for
} //end of for
/*沒有空閒區合併情況*/
if (tag == false) }}
k = true; //標誌已分配分割槽中有該作業
break; //如果存在,找到並合併完即可,無需再向下迴圈,提高效率
} //end of if
} //end of for
if (k == false)
sort(free_table);
printf("\n");
}void display_free(table free_table)
}printf("\n\n");
}void display_used(table used_table)
printf("\n\n");
}void chose(table free_table, table used_table)
}}void main()
最佳適應演算法 C語言實現
用c語言實現採用最佳適應演算法的動態分割槽分配過程和 過程。其中,空閒分割槽通過空閒分割槽鏈 表 來管理 在進行記憶體分配時,系統優先使用空閒區低端的空間,要求每次分配和 後顯示出空閒記憶體分割槽鏈的情況。include include include define free 0 define bu...
首次適應演算法 最佳適應演算法和最差適應演算法
首次適應演算法 first fit 從空閒分割槽表的第乙個表目起查詢該錶,把最先能夠滿足要求的空閒區分配給作業,這種方法的目的在於減少查詢時間。最佳適應演算法 best fit 從全部空閒區中找出能滿足作業要求的,且大小最小的空閒分割槽,這種方法能使碎片盡量小。最差適應演算法 worst fit 它...
最佳適應演算法 遺傳學演算法
遺傳演算法 genetic algorithm,ga 是模擬達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型,是一種通過模擬自然進化過程搜尋最優解的方法。遺傳演算法以一種群體中的所有個體為物件,並利用隨機化技術指導對乙個被編碼的引數空間進行高效搜尋。遺傳演算法基本思想 核心是達爾文優勝劣汰適者生存...