20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)
20172319 2018.10.12 《Java程序设计教程》第6周课堂测验
- 课程:《程序设计与数据结构》
- 班级:1723
- 学生:唐才铭
- 学号:20172319
- 指导老师:王志强
- 日期:2018.10.12
- 必修/选修:必修
目录
- 测试内容
- 测试要求
- 实验步骤
- 需求分析
- 代码实现及解释
- 程序运行结果及代码截图
- 测试过程及遇到的问题
- 代码链接
- 参考资料
测试内容
- 已知线性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少?
(本题目2分,要求写出结题过程)
测试要求
- 完成蓝墨云班课上的ASL测试任务;并截图(类代码,测试代码,运行结果代码)发送至蓝墨云
- 托管代码至git@OSC,详情参考使用开源中国托管代码
- 返回目录
实验步骤
需求分析
- 需要了解、掌握与折半查找相关的知识
- 了解ASL是什么?
- 返回目录
代码实现及解释
折半查找(二分查找):
- 相对于线性查找来说效率较高;
- 要求:被查找元素处在一个项目组中;被查找的元素已经排好顺序;
- 原理:首先先确定在该存储结构的中点位置;之后将待查找的值与中值进行比较;若二者相等,则查找成功并返回此位置,否则确定新的查找区间,再继续进行二分查找:
- 1.若待查找值大于中值,则新的查找区间为前一查找区间的中值及区间后半部分元素。
- 2.若待查找值小于中值,则新的查找区间为前一查找区间的中值及区间前半部分元素。
- 从初始的查找区间开始,每经过一次与当前查找区间的中点位置上的结点值的比较,即可判断查找是否成功,不成功则当前的查找区间便缩小一半。这一过程一直重复,直至找到待查找值的位置,或者直至当前的查找区间为空(即查找失败)为止。
public class BinarySearch {/** 循环实现二分查找算法arr 已排好序的数组x 需要查找的数-1 无法查到数据*/public static int binarySearch(int[] arr, int x) {int low = 0; int high = arr.length-1; while(low <= high) { int middle = (low + high)/2; if(x == arr[middle]) { return middle; }else if(x <arr[middle]) { high = middle - 1; }else { low = middle + 1; } } return -1; }//递归实现二分查找public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){ int midIndex = (beginIndex+endIndex)/2; if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){ return -1; } if(data <dataset[midIndex]){ return binarySearch(dataset,data,beginIndex,midIndex-1); }else if(data>dataset[midIndex]){ return binarySearch(dataset,data,midIndex+1,endIndex); }else { return midIndex; } } public static void main(String[] args) {int[] arr = { 6, 12, 33, 87, 90, 97, 108, 561 };System.out.println("循环查找:" + (binarySearch(arr, 87) + 1));System.out.println("递归查找"+binarySearch(arr,3,87,arr.length-1));}
}
ASL(Average Search Length :平均查找长度)
- 衡量查找效率的一个标准。
对于含有n个数据元素的查找表,查找成功的平均查找长度为:ASL=∑PiCi (i=1,2,3,…,n)。其中:Pi 为查找表中第i个数据元素的概率,Ci为找到第i个数据元素时已经比较过的次数,∑Pi=1。
返回目录
程序运行结果及代码截图
- 已知线性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少?
- 解答:
- 表中共有11个元素,其中56为表中间元素的值。
- 使用二分查找,则:
- 56需要查找1次;
- 19及80需要查找2次;
- 13,21,75,88需要查找3次;
- 5,37,64,92需要查找4次;
- 查找的概率相等:1/11;
ASL=1/n * ∑Ci = 1/11 * (1 + 2 * 2 + 4 * 3 + 4 * 4) = 33/11 = 3
返回目录
参考资料
查找算法平均查找长度的计算方法
返回目录
转载于:https://www.cnblogs.com/Tangcaiming/p/9787822.html
20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)相关推荐
- 《Java程序设计》第15周课堂实践总结
<Java程序设计>第15周课堂实践总结 实践一 教材代码检查-p242 要求 在IDEA中或命令行中运行P242 StackTraceDemo2.java 代码运行结果和教材一致吗?为什 ...
- 最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础...
最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础,加油吧 距离去北京还有23天 转载于:https://www.cnblogs.com/AceIsSunsh ...
- 20145209刘一阳《JAVA程序设计》第七周课堂测试
第七周课堂测试 1.命令"CREATE DATABASE "用来创建一个数据库.(A) A .true B .false 2.以下不属于驱动的四种类型的是(C) A .JDBC-O ...
- python交互式程序设计导论第五周小测试答案_20145209刘一阳《JAVA程序设计》第五周课堂测试...
第五周课堂测试 1.下列关于内部类的说法,正确的是(ABD) A .其他类不可以用某个类的内部类声明对象. B .内部类字节码文件的名字格式是"外嵌类名$内部类名". C .内部类 ...
- python语言程序设计实践教程实验八答案_清华大学出版社-图书详情-《Java程序设计教程及实验指导》...
前言 Java程序设计教程及实验指导Java是一门主流的面向对象的程序设计语言,是面向对象程序设计教学的主流语言.本书由有多年教学经验的专业教师编写,分为教程以及实验与课程设计两部分.教程部分从Jav ...
- Java程序设计教程与实训_Java程序设计教程与项目实训
Java程序设计教程与项目实训 编辑 锁定 讨论 上传视频 <Java程序设计教程与项目实训>是2017年8月清华大学出版社出版的图书,作者是温秀梅.司亚超. 书 名 Java程序设 ...
- java程序设计教程与项目_Java程序设计教程与项目实训
书名:Java程序设计教程与项目实训 作者:温秀梅.司亚超 出版社:清华大学出版社 出版日期:2017/8/1 字数: 页数: 版次: ISBN:9787#302473701 定价:49.5 目录 章 ...
- 2018.10.12 第1周的第2次小组讨论
2018.10.12 第1周的第2次小组讨论 签到表 问题陈述 小组分工 签到表 学号 姓名 状态 1120151719 马小东 到 1120151725 王鹏宇 到 1120151726 杨钦凯 到 ...
- 20155222 2016-2017-2 《Java程序设计》第8周学习总结
20155222 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从J ...
最新文章
- opencv python 多帧降噪算法_防抖技术 | OpenCV实现视频稳流
- 你觉得 ThreadLocalRandom 这玩意真的安全吗?
- oracle 取前10条记录
- ASP.NET Core中显示自定义错误页面-增强版
- 工业用微型计算机(15)-指令系统(10)
- LeetCode 第 207 场周赛(245/4115,前5.95%)
- Mysql yum 安装后,一些重要的文件路径
- 每日笔记---使用@ConfigurationProperties读取yml配置
- 国货当自强!华为未来 10 年 15% 收入将投入研发
- Java通过 p12 建立ssl链接
- istio:灰度发布与AB测试
- MySQL安装教程 + 安装包
- 参加科学教师与计算机培训总结,小学科学教师培训总结
- 导之以行——儿子喝酸奶篇
- 5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐
- 计算机同一优盘记录,怎么查看电脑插过U盘的记录
- Python matplotpy颜色表(python画图常用颜色)
- 银河麒麟操作系统搭建本地源
- 互联网数据标注员是做什么的?有什么发展前途吗?
- 为什么说手游代理是目前比较具有优势的创业方式呢?
热门文章
- cloudera manager 及CDH卸载
- 鸡啄米vc++2010系列35(工具栏资源及CToolBar类)
- Flex Socket 安全沙箱问题解决
- silverlight textblock 自动换行
- 【转】C#调用ADOX创建Access数据文件后关闭连接
- linux 网络地址
- linux GPIO驱动详解
- element ui登录界面_Vue和Element-UI做一个简单的登录页面
- Java中expecial,RxJava 学习笔记 (一)
- virtualbox 创建桥接网络_VirtualBox 桥接上网方式的配置