首页 > 解决方案 > 如何删除未排序数组中具有最高值的项目?

问题描述

所以现在我正在尝试编写一个函数来删除未排序数组中的最大值。

目前代码如下所示:

    @Override
public void remove() throws QueueUnderflowException {
    if (isEmpty()) {
        throw new QueueUnderflowException();
    } else {
        int priority = 0;
        for (int i = 1; i < tailIndex; i++) {
            while (i > 0 && ((PriorityItem<T>) storage[i - 1]).getPriority() < priority)
            storage[i] = storage[i + 1];
            i = i - 1;
        }
        /*int max = array.get(0);

        for (int i = 1; i < array.length; i++) {
        if (array.get(i) > max) {
        max = array.get(i);
        }*/
    }
        tailIndex = tailIndex - 1;
    }

在这里,我对此进行了尝试:

int priority = 0;
    for (int i = 1; i < tailIndex; i++) {
        while (i > 0 && ((PriorityItem<T>) storage[i - 1]).getPriority() < priority)
        storage[i] = storage[i + 1];
        i = i - 1;

该程序运行没有麻烦,但仍然删除数组中的第一项而不是最高数字。这段代码被我的大学讲师提供了一个不同的解决方案,但不幸的是它在这里不起作用。

这个解决方案会在足够多的争执下工作吗?还是我应该尝试另一种解决方案?

谢谢。

标签: java

解决方案


步骤 1
找到最高索引。

int[] array;
int highIndex = 0;
for (int i = 1; i < highIndex.size(); i++)
    if (array[highIndex] < array[highIndex])
        highIndex = i;

步骤 2
创建新数组new int[array.size() - 1]

步骤 3
将数组的所有值移动到新数组中(最高的除外)。

我的提示:如果可能,请使用List. 它降低了您的复杂性。


推荐阅读