我遇到了这个问题,我需要有效地删除列表/数组中的最小元素。这将是相当微不足道的解决 - 一个堆就足够了。
但是,现在的问题是,当我删除最小的元素时,会导致数据结构中其他元素的变化,这可能会导致顺序发生变化。一个例子是这样的:
我有一个元素数组:
[1,3,5,7,9,11,12,15,20,33]
当我从数组中删除“1”时,“5”和“12”分别更改为“4”和“17”。
[3,4,7,9,11,17,15,20,33]
因此不维持排序。
但是,被删除的元素将具有指向所有将被更改的元素的指针,但不知道将更改多少元素以及更改多少。
所以我的问题是:
从数据结构中删除最小元素同时保持排序时,存储这些元素以最大化性能的最佳方法是什么?还是我应该让它不分类?
我当前的实现只是将它们未排序的存储在一个向量中,因此时间复杂度为 O(N^2),O(N) 用于查找最小元素,以及 N 个删除。