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

  • 相关阅读:
    php7与其他版本共存
    centos源码安装mysql5.7
    禁用composer update命令
    lumen怎么得到当前Uri的控制器、Action、路由规则
    配置lumen的log为daily模式
    laravel如何打印orm封装的sql语句
    nginx 重写URL尾部斜杠
    Laravel的Nginx重写规则--让路由支持末尾加斜线
    laravel redis存数组并设置过期时间
    openresty
  • 原文地址:https://www.cnblogs.com/ooo0/p/12162053.html
Copyright © 2011-2022 走看看