优先级队列在Java中实现3个5个项目的数组

时间:2014-12-10 00:50:45

标签: java arrays priority-queue

我有3个5项的数组。输入一个小于99的整数将把它放在第一个数组中,输入一个从101到199的整数将把它放到第二个中,201-299将把它放到第三个数组中。

import java.util.Arrays;
import java.util.Scanner;


public class priorityQueue {
    private int[][] queueArray;
}

public priorityQueue() //constructor
{
    queueArray = new int[3][5];
}

public void printQueue() {
    System.out.println(Arrays.toString(queueArray));
}

public boolean isFull(int[] array){
    return (array.length-1 == 5);
}

public boolean enqueue(int item){
    //returns true or false if enqueue is not possible
    //try lower priority queue(s) if necessary


} 

我不知道如何实现如何插入整数的优先级,有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:-1)

这是对要求的基本实施,以及它的价值。请注意,您可以使用queueArray参数上的整数除法将索引置于item的第一级,如下所示:int whichQueue = item / 100;

import java.util.Arrays;

public class PriorityQueue
{
    private int[][] queueArray;

    public PriorityQueue() // constructor
    {
        queueArray = new int[3][5];
    }

    public void printQueue()
    {
        System.out.println(Arrays.toString(queueArray));
    }

    public boolean isFull(int[] array)
    {
        return findEmptySlot(array) < 0;
    }

    public boolean enqueue(int item)
    {
        if (item < 1 || item > 299) {
            throw new IllegalArgumentException("item must be between 1 and 299");
        }
        for (int i = item / 100; i < this.queueArray.length; i++) {
            if (enqueue(item, this.queueArray[i])) {
                return true;
            }
        }
        return false;
    }

    private boolean enqueue(int item, int[] queue) {
        int emptySlot = findEmptySlot(queue);
        if (emptySlot >= 0) {
            queue[emptySlot] = item;
            return true;
        }
        return false;
    }

    private int findEmptySlot(int[] queue) {
        for (int i = 0; i < queue.length; i++) {
            if (queue[i] == 0) {
                return i;
            }
        }
        return -1;
    }
}