我正在用java为sjf编程一个cpu调度程序。我有一个包含作业对象的arraylist。每个作业由一个程序id和一个cpu突发数组等组成。如何在所有作业中找到最小的值,即从每个数组的最低索引中进行选择?
好吧,我会尽量说清楚的。下面是我用来创建作业并同时将它们添加到arraylist的代码。
//add PCB objects to the jobQueue ArrayList. listOfBursts is an array.
jobQueue.add(new PCB(processID, listOfCPUBursts));
假设jobqueue arraylist中有3个pcb对象。我需要按照cpu突发在数组中出现的顺序运行它们,但是必须首先运行最低索引中的最小值。我觉得这个还是不清楚,所以我要试试照片。
PCB-1's array = {4, 7, 2, 3}
PCB-2's array = {5, 2, 1, 3}
PCB-3's array = {3, 8, 4, 2}
无论输入了什么时间片,这些作业都需要进入cpu,然后返回到jobqueue。它们进入cpu的顺序需要由任何pcb的索引0处的最低值确定。在这种情况下,我需要找到最低的4,5,或3。
假设时间片是3。pcb-3到达cpu,用完它的突发,然后返回到jobqueue。同样,我需要找到发送到cpu的最低值,但现在我看到的是4、5和8。
我希望这更有意义。
1条答案
按热度按时间pxiryf3j1#
声明一个数组以存储每个作业中每个cpu突发数组的所有最低值。将此数组的大小初始化为可用的作业数(arraylist大小)。
遍历arraylist以获取存储在其中的每个作业对象。从每个作业获取cpu突发数组,并按升序排序。这将为每个数组的开头带来最小的值。获取索引0处的值并存储在前面声明的数组中。
现在有了一个包含所有最低值的数组。
下面是一些示例代码:
工作类别:
填写作业和阵列列表:
现在有一个名为jobslist的arraylist,它包含10个作业对象。每个作业对象包含一个名为programid的整数变量(其中包含一个唯一的程序id号)和一个名为cpubursts的整数数组,其中包含15个从1到100的随机突发值。
现在要获得每个作业的最低突发值: