Java中  Set 和 List 集合  的contains()方法,检查数组链表中是否包含某元素
检查数组链表中是否包含某元素,使用 Set 而不使用 List  的原因是效率问题,
 前者的 set.contains()方法 实现的复杂度是O(1)、 而后者 list.contains()方法 实现的复杂度是O(n)

List特点:

元素有放入顺序,元素可重复 ,

Set特点:

元素无放入顺序,元素不可重复(

注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)

附上二者contains()方法的区别对比:

​1、 Set的contains()方法:

HashSet的contains返回true,当且仅当equals返回true    ​

并且    ​hashCode返回相等的值 ;Set除了比较equals,还比较hashCode

2、List的contains()方法:

list.contains(o),系统会对list中的每个元素e调用o.equals(e),方法,加入list中有n个元素,那么会调用n次o.equals(e),

只要有一次o.equals(e)返回了true,那么list.contains(o)返回true

算法时间复杂度的表示法O(n²)、O(n)、O(1)、O(nlogn)

简单理解: 就是变量为n的时候,算法需要对变量操作次数的量级。
简单解释:
   简单说O(n²)表示当n很大的时候,复杂度约等于Cn²,C是某个常数,简单说就是当n足够大的时候,n的线性增长,复杂度将沿平方增长。
   O(n)也是差不多的意思,也就是说n很大的时候复杂度约等于Cn,C是某个常数。
   O(1)就是说n很大的时候,复杂度基本就不增长了,基本就是个常量C。
举例解释:
要找到一个数组里面最大的一个数,你要把n个变量都扫描一遍,操作次数为n,那么算法复杂度是O(n).
用冒泡排序排一个数组,对于n个变量的数组,需要交换变量位置n^2 次,那么算法复杂度就是O(n^2 ).
有时候,如果对变量操作的次数是个多项式比如n^4+n^2+n, 就取数量级最大的那个,O(n^4)

算法时间复杂度的表示法O(n²)、O(n)、O(1)、O(nlogn)等是什么意思?的更多相关文章

  1. 如何理解算法时间复杂度的表示法O(n²)、O(n)、O(1)、O(nlogn)等?

    先从 来说,理论上哈希表就是O(1).因为哈希表是通过哈希函数来映射的,所以拿到一个关键字,用哈希函数转换一下,就可以直接从表中取出对应的值.和现存数据有多少毫无关系,故而每次执行该操作只需要恒定的时 ...

  2. 新发现:排序算法时间复杂度只有O(3n),命名为"wgw"排序法

    思路:首先在待排序数组i[]中找出最大的值,以(最大值+1)的大小创建一个空数组kk[],然后遍历待排序数组i[]中的值n,其值n对应数组kk[]中的第n个元素加1.最后再把数组kk[]排好序的值赋回 ...

  3. 数构与算法 | 什么是大 O 表示算法时间复杂度

    正文: 开篇我们先思考这么一个问题:一台老式的 CPU 的计算机运行 O(n) 的程序,和一台速度提高的新式 CPU 的计算机运 O(n2) 的程序.谁的程运行效率高呢? 答案是前者优于后者.为什么呢 ...

  4. JVM探究 面试题 JVM的位置 三种JVM:HotSpot 新生区 Young/ New 养老区 Old 永久区 Perm 堆内存调优GC的算法有哪些?标记清除法,标记压缩,复制算法,引用计数法

    JVM探究 面试题: 请你弹弹你对JVM的理解?Java8虚拟机和之前的变化更新? 什么是OOM?什么是栈溢出StackOverFlowError?怎么分析 JVM的常用调优参数有哪些? 内存快照如何 ...

  5. 深入浅出数据结构C语言班(11)——简要介绍算法时间复杂度

    在接下来的数据结构博文中,我们将会开始接触到一些算法,也就是"解决某个问题的方法",而解决同一个问题总是会存在不同的算法,所以我们需要在不同的算法之中做出抉择,而做出抉择的根据往往 ...

  6. Python(算法)-时间复杂度和空间复杂度

    时间复杂度 算法的时间复杂度是一个函数,它定量描述了该算法的运行时间,时间复杂度常用“O”表述,使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况 时间复杂度是用来估计算法 ...

  7. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){ if ( ...

  8. C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

    C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...

  9. Levenberg-Marquardt迭代(LM算法)-改进Guass-Newton法

                  1.前言                                a.对于工程问题,一般描述为:从一些测量值(观测量)x 中估计参数 p?即x = f(p),     ...

随机推荐

  1. bzoj1594 Pku3764 The xor-longest Path

    题目链接 先求每个点到根的异或和 然后就要找出两个点,使dis[a]^dis[b]最大 注意异或的性质,我们可以用trie树,沿着与当前数字每位的相反方向走 #include<algorithm ...

  2. 模拟ATM的功能

    import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; import java.util.A ...

  3. VMWare常用快捷键

    VMWare常用快捷键 Ctrl-Alt-Enter    进入全屏模式 ctrl+alt+insert      退出全屏 Ctrl-Alt            返回正常(窗口)模式 Ctrl-A ...

  4. hiho一下 第148周

    题目1 : Font Size 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Steven loves reading book on his phone. The b ...

  5. redis 配置详解

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...

  6. oracle RAC如何正确地删除ASM磁盘组

    1.登录到命令行 切换到grid用户 [grid@swnode1 ~]$ sqlplus / as sysasm SQL*Plus: Release Production on Wed May :: ...

  7. 《C Elements of Style》 书摘

    <C Elements of Style> 书摘 学完C语言和数据结构后,虽然能解决一些问题,但总觉得自己写的程序丑陋,不专业.这时候看到了Steve Oualline写的<C El ...

  8. 定制FileField中的上传文件名称

    FileField中的upload_to属性可以设定上传文件的存储目录和名称,它可以是个字符串,也可以是个callable,比如一个方法. 当upload_to的值设为一个方法时,就可以对上传文件的名 ...

  9. Bootstrap3基础 bg-danger/info... 辅助类样式 背景文本颜色

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  10. Python3基础 list pop 取出列表的最后一个元素

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...