平均查找长度之二分查找 -【Java】
编程统计,长度为N的有序数组进行二分查找时,查找成功与失败的平均查找长度。注意,表达成总查找长度除以总查找个数的形式。
输入样例:
输入数组的元素个数:一个正整数:
6
输出样例:
在第一行输出查找成功的平均查找长度,在第二行输出查找失败的平均查找长度: (不要求计算,也不进行约分,仅输出成分数形式)
14/6
27/7
如图所示的二叉排序树
查找成功的平均查找长度为:∑(本层高度*本层元素个数)/节点总数=(1*1+2*2+3*3+3*4)/9
查找不成功的平均查找长度:∑(本层高度*本层补上的叶子个数)/补上的叶子总数=(2*1+3*3+4*6)/10
查找成功的平均查找长度为:二叉树每一层的节点数乘以层数,然后累加,最后除以元素个数n。
查找失败的平均查找长度为:把每一个节点的叶子节点补齐,然后计算叶子节点的个数乘以所在的层数,然后累加,最后除以元素个数n加一。
代码实现:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int high=high(n); //二叉树的高度int allSearch=0; //成功总查找次数for(int i=1; i<high; i++)allSearch+=(i*Math.pow(2,i-1));int lastHeightNodes = n - (int)Math.pow(2,high-1) + 1; //最下面一层的节点数allSearch+=(lastHeightNodes*high);System.out.println(allSearch+"/"+n);int unAllSearch=lastHeightNodes*2*(high+1); //失败总查找次数(满)int mm = (int)Math.pow(2,high-1)-lastHeightNodes;unAllSearch+=(mm*high);System.out.println(unAllSearch+"/"+(n+1));}public static int high(int n){ //高度int s=0;while(n>0){n=n/2;s++;}return s;}}
平均查找长度之二分查找 -【Java】相关推荐
- 二分查找的平均查找长度_二分查找
1.什么是二分查找 数据的查找在计算机的操作中非常常见,那么我们应该怎样在计算机中实现查找操作呢? 最简单的一种方法:"傻找",也就是一个一个的找,我们把数组中的每个元素都和我们想 ...
- 二分查找的平均查找长度_二分查找(折半查找)代码实现
整理不易,手有余香请点赞! 折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高.但是该算法的使用的前提是静态查找表中的数据必须是有序的. 在折半查找之前对查找表按照所查的关 ...
- 查找算法:二分查找、顺序查找
08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...
- c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)
冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...
- c语言 二分查找法 及二分查找法的时间复杂度。
二分查找法是用来查找数组中指定的那个元素.使用二分查找的前提是数组是有序的.(这里我们假设是升序) 在现实生活中,我们要猜一个区间内的数字,比如1~10之间,我们通常会猜它的中间数5,再根据要猜的数和 ...
- 散列表平均查找长度_如何查找链接列表的长度?
散列表平均查找长度 什么是链表? (What is a Linked List?) A linked list is a linear data structure used for storing ...
- java二分查找(含二分查找代码)
目录 一:二分查找的条件 二:二分查找思想 三:二分查找代码(循环) 四:二分查找代码(递归) 一:二分查找的条件 1.1 必须是顺序存储结构 1.2 必须有序序列 二:二分查找思想 当 ...
- java 二分查找_JAVA 实现二分查找算法。我知道你会,但没你想象的那么简单
二分查找算法定义:二分查找(binary search),也称折半搜索,是一种在 有序数组 中 查找某一特定元素 的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结 ...
- 查找算法之二分查找(对半查找)
当有序表采用顺序存储时,可以采用二分查找的方式查找指定关键字的元素. 二分查找的基本思想是选择表中某一位置 i i i的元素 A i A_i Ai,设该元素的关键字为 K i K_i Ki ...
最新文章
- PHP 用图片输出验证码 无法正常显示
- 阿里排查Java问题工具清单!
- 计算机技术是双证,计算机技术在职研究生单证可以转双证吗
- 永远不要在 MySQL 中使用 UTF-8
- bzoj1095 [ZJOI2007]Hide 捉迷藏
- 利用有名管道实现进程间的通信
- 中文python笔记_Python学习笔记-基础篇
- 【OpenCV 例程200篇】76. OpenCV 实现图像傅里叶变换
- 使用Swagger,ApiExplorer和NSwag掌握ASP.NET Core和ABP中的外部Web API
- 如何限制访问电脑磁盘
- 使用PackageManager获得应用(包)信息
- 再学 GDI+[36]: TGPPen - SetLineCap
- Drupal开发时如何使用远端图片减轻工作量
- 软件工程的可行性分析
- 牛转乾坤,管理者必读这10本书
- 不能不知道的分布式基础理论
- 2022年二级建造师报名需要准备什么
- 使用IP代理池伪装你的IP(python)
- 天生棋局与棋局判断(C语言)
- 个人作业2:APP案例分析