c#第一次拟合算法输出
本文关键字:输出 算法 拟合 第一次 | 更新日期: 2023-09-27 17:49:30
我已经给了一个家庭作业来编码first-fit算法,这意味着根据first-fit算法将一组作业分配给一组内存块。到目前为止,我有算法工作和分配工作正确;然而,我的问题是,当我的队列作业输出到控制台时,我的循环不会遍历发送到队列的所有作业,它只显示发送到队列的初始作业及其大小,直到所有要发送到队列的作业都被迭代通过。
这可能很简单,但我似乎不能弄清楚....还有什么需要的,尽管问,我可以提供。谢谢你。
public void firstFit(int counter, int JobIndex)
{
Counter = counter;
jobIndex = JobIndex;
do {
if (jobSize[jobIndex] > memorySize[Counter-1])
{
Counter += 1;
}
else
{
Console.Text += Environment.NewLine + "Job " + (jobIndex+1) + " of size "
+ jobSize[jobIndex] +
" has been loaded into memory block:"
+ Counter;
memorySize[Counter-1] = memorySize[Counter-1]-jobSize[jobIndex];
Console.Text += Environment.NewLine + "The size of memory block " + Counter + " is now " + memorySize[Counter-1];
Counter = 1;
jobIndex += 1;
}
} while (Counter <= blocks && jobIndex < jobs);
for (int i = 0; i < jobs-jobIndex; i++ ){
jobQ = jobIndex;
if (jobQ < jobs)
{
Console.Text += Environment.NewLine + "Job " + (jobQ+1) + " of size " + jobSize[jobQ] + " is sent to waiting queue!";
}
}
作业1的大小为45,已加载到内存块中内存块1现在是16
作业2的大小为1230,已加载到内存块中内存块2现在是410
作业3的大小为325,已加载到内存块中内存块2现在是85
大小为303的作业4已加载到内存块中内存块3现在是131
大小为1178的作业5已加载到内存块中内存块5现在是393
大小为1276的作业6已加载到内存块中内存块6现在是426
大小为965的作业7已加载到内存块中内存块7现在是322
大小为537的作业8被发送到等待队列!
大小为537的作业8被发送到等待队列!
大小为537的作业8被发送到等待队列!
在结尾有这样的代码:
for (int i = 0; i < jobs-jobIndex; i++ )
{
jobQ = jobIndex;
if (jobQ < jobs)
{
Console.Text += Environment.NewLine + "Job " + (jobQ+1) + " of size " +
jobSize[jobQ] + " is sent to waiting queue!";
}
}
jobQ
的值在每次循环中都是相同的,所以当然每次它都会打印相同的内容。有没有可能你指的是循环中的第一行读作:
jobQ = jobIndex + i;
? ?
已排序。莱恩,谢谢你给我指出了正确的方向。问题是我没有试图获得需要进入队列的所有值的作业号,我只是获得jobQ+1的作业号,这总是相同的作业,第一个不适合的作业。我的jobSize也是一样。
下面是我需要修改的代码:
for (int i = 0; i < jobs-jobIndex; i++ ){
jobQ = jobIndex;
if (jobQ < jobs)
{
Console.Text += Environment.NewLine + "Job " + (jobQ+(i+1)) + " of size " +
jobSize[jobQ+i]) + " is sent to waiting queue!";
}
}