📜  门| GATE-CS-2015(Set 1)|第50章

📅  最后修改于: 2021-06-28 23:48:11             🧑  作者: Mango

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

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

由于插入操作的数量渐近地较高,因此优选未排序的数组。
这个问题的测验