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被发送到等待队列!

c#第一次拟合算法输出

在结尾有这样的代码:

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!";

 }
}