• 集合:一条规则决定性能


    集合:一条规则决定性能

    集合。它是一种不允许元素重复的数据结构。

    其实集合是有不同形式的,但现在我们只讨论基于数组的那种。这种集合跟数组差不多,都是一个普通的元素列表,唯一的区别在于,集合不允许插入重复的值。

    集合的读取跟数组的读取完全一样,计算机只要一步就能获取指定索引上的值。如之前解释的那样,这是因为计算机知道集合开头的内存地址,所以能够一步跳到集合的任意索引。O(1)

    集合的查找也跟数组的查找无异,需要N步去检查某个值在不在集合当中。删除也是,总共需要N步去删除和左移填空。 O(N)

    插入就不同了。

    先看看在集合末尾的插入。 对于数组来说,末尾插入是最高效的,它只需要1步。 而对于集合,计算机得先确定要插入的值不存在于其中——因为这就是集合:不允许重复值。于是每次插入都要先来一次查找。 在N个元素的集合中进行插入的最好情况需要N+1步——N步去确认被插入的值不在集合中,加上最后插入的1步。

    最坏的情况则是在集合的开头插入,这时计算机得检查N个格子以保证集合不包含那个值,然后用N步来把所有值右移,最后再用1步来插入新值。总共2N+1步。 O(N)

    参考:数据结构与算法图解.1.2

  • 相关阅读:
    extjs数据类型
    Extjs 动态控制列显示
    400
    extjs主单清单同时编辑提交
    js-map模拟
    Leetcode 407.接雨水
    Leetcode 406.根据身高重建队列
    Leetcode 405.数字转化为十六进制数
    Leetcode 402.移掉k位数字
    Leetcode 401.二进制手表
  • 原文地址:https://www.cnblogs.com/ooo0/p/12162053.html
Copyright © 2020-2023  润新知