【问题标题】:What is indexing? Why don't we use hashing for everything?什么是索引?为什么我们不对所有事情都使用散列?
【发布时间】:2019-04-14 12:39:50
【问题描述】:

复习一些关于数据结构等的面试信息。

所以,据我了解,数组的索引是 O(1),我认为这意味着找到数组中空间 x 中包含的特定元素。只是想确认一下,因为我自己也在猜测。

此外,哈希映射在索引、搜索、插入和删除方面都是 O(1)。这难道不会使任何数据结构问题变得毫无意义,因为哈希映射总是最好的解决方案吗?

谢谢

【问题讨论】:

  • 无法使用哈希图(高效)进行范围查询
  • 因为 slooooooooow。提示:索引到数组需要哪些步骤;那些需要在哈希表中找到项目的人? (注意,我只是在回答为什么我们完全使用数组而不是哈希表的问题。这甚至没有触及几乎无限的其他用例,其中一个或两个完全不合适)

标签: indexing data-structures hashmap


【解决方案1】:

索引不仅仅与数组有关,

根据this - 索引创建指向文件夹、文件和记录位置的表(索引)。根据目的,索引根据文件名、数据库记录中的关键数据字段、文件中的文本或图形或视频文件中的唯一属性来识别资源的位置。

对于您的第二个问题,由于各种原因,哈希映射不是绝对的或最佳的数据结构,主要是:

  • 碰撞
  • 哈希函数计算时间
  • 使用了额外的内存

还有很多数据结构问题,hashmaps 并不优越:

  • 用于查找第 k 个最小元素并支持更新的数据结构(Hashmap 就像 bruteforce,因为它不保持元素排序,所以我们需要平衡二叉搜索树之类的东西)

  • 用于查找单词是否在字典中的数据结构(当然 hashmap 有效,但 Trie 更快且内存更少)

  • 用于在数组的任何范围内查找最小元素的数据结构并进行更新(再一次,hashmap 太慢了,我们需要像段树这样的东西)

  • ...

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 2013-12-08
    • 2021-04-14
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2018-02-09
    相关资源
    最近更新 更多