带有队列的RoundRobin算法

时间:2018-11-03 17:20:28

标签: java data-structures

我对带队列的轮询算法有疑问,我对数据结构还是陌生的。该算法应做到这一点:

  • 我们得到3个数字,例如(12 5 8)和一个量子数,例如q:10
  • 然后算法应该做到这一点:

    step1: 12 5 18
    step2: 5 18 2
    step3: 18 2
    step4: 2 8
    step5: 8
    step6: array is empty
    

如您所见,当量子数等于或大于数组的数时,我们将删除数组中的第一个数。当量子数小于我们的数量时,量子数(12-10=2)将被添加到数组的末尾。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

欢迎使用StackOverflow!

您要:

  • 将列表存储在ArrayList(或类似名称)中
  • 获取第一项
  • 检查它是否大于quantum
  • 如果是这样,请将其添加到列表的末尾(在减去quantum 课程)。

只需继续操作,直到ArrayList为空。

以下是代码:

ArrayList<Integer> values = new ArrayList<Integer>();
values.add(12);
values.add(5);
values.add(18);
int quantum = 10;
int index = 0;
while (values.size() > 0) {
    System.out.println(values.toString());
    int value = values.remove(0);
    if (value > quantum) {
        values.add(value - quantum);
    }
}
System.out.println("Array is empty");

这将为您提供所需的结果:

[12, 5, 18]
[5, 18, 2]
[18, 2]
[2, 8]
[8]
Array is empty