java - 如何删除未排序数组中具有最高值的项目?
问题描述
所以现在我正在尝试编写一个函数来删除未排序数组中的最大值。
目前代码如下所示:
@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;
该程序运行没有麻烦,但仍然删除数组中的第一项而不是最高数字。这段代码被我的大学讲师提供了一个不同的解决方案,但不幸的是它在这里不起作用。
这个解决方案会在足够多的争执下工作吗?还是我应该尝试另一种解决方案?
谢谢。
解决方案
步骤 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
. 它降低了您的复杂性。
推荐阅读
- java - Telegram Bot gradle.build 配置
- azure - azure - powershell Set-AzVMDiagnosticsExtension 似乎无法跨订阅工作
- v8 - 如何在 V8 中使用嵌入式 JavaScript 管理关键资源
- reactjs - React Redux 和本地状态的最佳实践
- ios - 以编程方式添加按钮会导致致命错误
- swift - 按位置从字符串中删除字符
- ios - 该应用程序没有启用钥匙串访问组
- snowflake-cloud-data-platform - 可以使用 COPY INTO 命令将 Oracle dmp 文件摄取到 Snowflake 中吗
- swift - 如何检索具有许多 spritekitnodes 的数组?
- java - 使用spring数据jpa的实体关系中的Orderby子句