JAVA数据结构和算法(二)—线性查找
来源:互联网 发布:嵌入式软件开发课程 编辑:程序博客网 时间:2024/05/01 12:56
Question:N个不重复的数,按照线性查找其中的某个数,则该数所查找用的次数为?
Answer:
(1)概念:线型查找:把数组的每一个元素和检索关键字比较,按顺序从第一个元素一直检索到要查找的元素,
平均来说,程序要把查找关键字与一半数组元素进行比较。
(2)举例说明(Java语言):
int[] c = {1,2,3,4,5,6,7,8,9,10};(为了演示方便直接取的1-10,其实取任意的只要不重复即可)
按照线性查找数组c中数字3所用到的次数:
1)c有10个数,也就是问题中的N为10
2)按照线性查找第一次为1
3)以此类推第二次为2
4)第三次得到结果 查找的次数为3
(3) 建模(自己所想)
这个例子其实和我们数学中的概率事件是一致的:每个不重复的数出现的概率是1/N,由于是按照线性查找,
所以第n(<=N)个数的概率变为n/N,其概率和即为查找某个数所用到的次数,即1/N+2/N+...+(N-1)/N+N/N=(N+1)/2,
当N比较大时,上述结果N/2+1/2可以忽略1/2所以最终次数为N/2.
(4)时间复杂度为O(N/2),但是一般考虑复杂度时,不会算常量,所以可以将2去掉,时间复杂度为O(N).
有不对的地方,大家可以指出来 共同探讨哈
Answer:
(1)概念:线型查找:把数组的每一个元素和检索关键字比较,按顺序从第一个元素一直检索到要查找的元素,
平均来说,程序要把查找关键字与一半数组元素进行比较。
(2)举例说明(Java语言):
int[] c = {1,2,3,4,5,6,7,8,9,10};(为了演示方便直接取的1-10,其实取任意的只要不重复即可)
按照线性查找数组c中数字3所用到的次数:
1)c有10个数,也就是问题中的N为10
2)按照线性查找第一次为1
3)以此类推第二次为2
4)第三次得到结果 查找的次数为3
(3) 建模(自己所想)
这个例子其实和我们数学中的概率事件是一致的:每个不重复的数出现的概率是1/N,由于是按照线性查找,
所以第n(<=N)个数的概率变为n/N,其概率和即为查找某个数所用到的次数,即1/N+2/N+...+(N-1)/N+N/N=(N+1)/2,
当N比较大时,上述结果N/2+1/2可以忽略1/2所以最终次数为N/2.
(4)时间复杂度为O(N/2),但是一般考虑复杂度时,不会算常量,所以可以将2去掉,时间复杂度为O(N).
有不对的地方,大家可以指出来 共同探讨哈
0 0
- JAVA数据结构和算法(二)—线性查找
- 数据结构和算法(二)——线性表1
- 数据结构和算法系列 - c语言线性查找算法
- 数据结构与算法------线性查找
- java数据结构和算法(线性表)
- Java数据结构和算法:线性表
- Java查找算法--线性查找
- Java数据结构和算法——二叉查找树
- java数据结构和算法---基本查找排序
- 数据结构之线性查找和折半查找
- 数据结构与算法14:线性索引查找
- 数据结构和算法------查找
- 数据结构回顾版-java数据结构-有序数组和查找算法
- 【数据结构线性表查找】——顺序查找和折半查找详解和代码
- Java — 线性查找和二分查找法
- Java数据结构和算法(二)——数组
- Java数据结构和算法(二)——数组
- Java数据结构和算法(二)——数组
- Android EditText inputType常用属性值含义
- org.hibernate.ObjectNotFoundException: No row with the given identifier exists
- 【网络流24题-18】分配问题(BSOI2558)
- XPATH如何选择不包含某一个属性的节点?
- linux和unix的区别
- JAVA数据结构和算法(二)—线性查找
- RadioButton自定义背景图及字体颜色
- 使用HttpSessionListener接口监听Session的创建和失效
- 树莓派教程1-初次见面
- Android应用Design Support Library完全使用实例
- iOS开发-常用第三方开源框架介绍
- Cocos Creator 学习笔记——获取时间
- nodemanager启动失败
- js获取url参数