在一个长度为n的不同元素的数组中顺序查找元素x,查找成功时的平均比较次数为多少
2017-06-27 20:46
357 查看
技术之瞳 阿里巴巴技术笔试心得习题2.52:
使用二分查找在有序数组a
中查找一个元素x的时间复杂度为()。
A. O(n) B. O(n2) C. O(logn) D. O(nlogn)
分析:
一般这种情况问的都是最坏情况下的时间复杂度,二分查找每次对半,假设需要m次迭代查询,即2的m次方等于n,2m=n,所以m=log2(n)=logn/log2,时间复杂度只需要关注最高次幂即可,所以结果为C,对数级别的时间复杂度。
技术之瞳 阿里巴巴技术笔试心得习题2.53:
下列()动态集合结构中查找一个元素的期望时间最短。
A. 哈希表 B. 链表 C. 红黑树 D. 二分查找树
分析:
哈希表也就是散列表查找是常数级时间复杂度 O(1),链表是线性级别 O(n),红黑树和二分查找数都是对数及时间复杂度 O(logn),所以结果为A。
技术之瞳 阿里巴巴技术笔试心得习题2.54:
在一个长度为n的不同元素的数组中顺序查找元素x,查找成功时的平均比较次数为()。
A. n B. n-1/2 C. n+1/2 D. (n+1)/2
分析:
最好情况是x出现在第一位,那比较次数1此即可,然后依次出现在第二位,第三位……依照到出现在第n位,此时比较的次数为n次。所以结果为(1+2+...+n)/n=(n+1)/2.
使用二分查找在有序数组a
中查找一个元素x的时间复杂度为()。
A. O(n) B. O(n2) C. O(logn) D. O(nlogn)
分析:
一般这种情况问的都是最坏情况下的时间复杂度,二分查找每次对半,假设需要m次迭代查询,即2的m次方等于n,2m=n,所以m=log2(n)=logn/log2,时间复杂度只需要关注最高次幂即可,所以结果为C,对数级别的时间复杂度。
技术之瞳 阿里巴巴技术笔试心得习题2.53:
下列()动态集合结构中查找一个元素的期望时间最短。
A. 哈希表 B. 链表 C. 红黑树 D. 二分查找树
分析:
哈希表也就是散列表查找是常数级时间复杂度 O(1),链表是线性级别 O(n),红黑树和二分查找数都是对数及时间复杂度 O(logn),所以结果为A。
技术之瞳 阿里巴巴技术笔试心得习题2.54:
在一个长度为n的不同元素的数组中顺序查找元素x,查找成功时的平均比较次数为()。
A. n B. n-1/2 C. n+1/2 D. (n+1)/2
分析:
最好情况是x出现在第一位,那比较次数1此即可,然后依次出现在第二位,第三位……依照到出现在第n位,此时比较的次数为n次。所以结果为(1+2+...+n)/n=(n+1)/2.
相关文章推荐
- C语言 ,有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用拆半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出“无此数”
- 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有
- 轻松解决不同关键字序列构成的二叉排序树ASL(平均查找长度)(成功)不同问题
- 查找一个数组中出现次数最多的值(长度为1000)
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- 比较一个数组中,是否有相等的元素的不同方法比较
- 【1】 设一个长度为10的整型数组,  0)要求每个元素的值通过scanf输入,输入完成后,  1)请顺序输出这些整数,  2)请倒序输出这些整数,  3)输出这些数中的最大值,最小值
- 找出数组中的一个元素出现次数大于数组长度的一半的元素,若不存在返回0
- 有两等长数组A,B,所含元素相同,但顺序不同,只能取得A数组某值和B数组某值进行比较,比较结果为大于,小于,等于,但是不能取得同一数组A或者B中两个数进行比较,也不能取得某数组中的某个值
- java里如何实现两个等长度的字符串数组有多少个元素相同(从最左边开始,一旦遇到不同元素则跳出计数)
- 7.9 有15个数按大小的顺序存放在一个数组中,输入一个数,要求用拆半查找法找出该数是数组中第几个元素的值。(函数的方法)
- 数组中至多有一个出现次数大于数组长度一半元素,找出这个元素
- 设定二维整数数组B[0..m-1,0..n-1]的数据在行,列方向上都按从小到大的顺序排序,且整形变量x中的数据在B中存在。设计一个算法,找出一对满足B[i][j]=x的I,j值,要求比较次数不超过m
- 有序表和无序表分别进行顺序查找,对于查找失败的情况下,它们的平均查找长度是不同的
- 比较一个数组中,是否有相等的元素的不同方法比较
- 在一个整型数组中有一个元素的出现次数超过了数组长度的一半,试设计一个 在时间上尽可能高效的算法,找出这个元素。
- 已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。 给定一个int数组A,同时给定
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值
- 求一个长度为n的整型有序数组中是否有出现次数超过n/2的元素
- php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。