📜  门| GATE-CS-2015(套装1)|第 50 题

📅  最后修改于: 2021-09-25 05:01:02             🧑  作者: Mango

算法对一组数据项执行 (logN) 1/2 次查找操作、N 次插入操作、(logN) 1/2 次删除操作和 (logN) 1/2 次减键操作,键值是从线性有序集合中提取的.对于删除操作,提供指向必须删除的记录的指针。对于减少键操作,会提供一个指向减少其键的记录的指针。如果目标是在考虑所有操作的情况下实现最佳总渐近复杂度,以下哪一种数据结构最适合使用该算法?
(A)未排序数组
(B)最小堆
(C)排序数组
(D)排序后的双向链表答案:(一)
说明: insert in unsorted array的时间复杂度是O(1),Min-Heap中O(Logn),有序数组和有序DLL中O(n)。

  1. 对于未排序的数组,我们总是可以在末尾插入一个元素并在 O(1) 时间内插入
  2. 对于最小堆,插入需要 O(Log n) 时间。有关详细信息,请参阅二进制堆操作。
  3. 对于排序数组,插入需要 O(n) 时间,因为在最坏的情况下我们可能必须移动所有元素。
  4. 对于已排序的双向链表,插入需要 O(n) 时间来查找要插入元素的位置。

由于插入操作的次数越来越多,因此首选未排序的数组。
这个问题的测验