zoukankan      html  css  js  c++  java
  • 集合:一条规则决定性能

    集合:一条规则决定性能

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

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

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

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

    插入就不同了。

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

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

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

  • 相关阅读:
    抽象类的练习
    Java异常处理1
    接口的应用
    接口之代理模式
    接口之工厂方法的设计模式
    给ubuntu系统换新装
    2的幂次方表示(OJ 8758)
    Fibonacci【矩阵乘法】(POJ 3070)
    斐波那契公约数(luogu 1306)
    枪战Maf (bzoj 1124)
  • 原文地址:https://www.cnblogs.com/ooo0/p/12162053.html
Copyright © 2011-2022 走看看