快捷搜索:  汽车  科技

算法复杂度怎么理解(算法时间复杂度的O)

算法复杂度怎么理解(算法时间复杂度的O)附上二者contains()方法的区别对比:注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的hashCode决定的,其位置其实是固定的)元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复(

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的时候,算法需要对变量操作次数的量级。

时间复杂度这个东西,其实更准确点说应该是描述一个算法在问题规模不断增大时对应的时

间增长曲线。所以,这些增长数量级并不是一个准确的性能评价,可以理解为一个近似值,时间的增长近似于logN、NlogN的曲线。

算法复杂度怎么理解(算法时间复杂度的O)(1)

猜您喜欢: