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).


有不对的地方,大家可以指出来 共同探讨哈
0 0
原创粉丝点击