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,详情参考使用开源中国托管代码
  • 返回目录

实验步骤

需求分析

  1. 需要了解、掌握与折半查找相关的知识
  2. 了解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周课堂实践(补写博客)相关推荐

  1. 《Java程序设计》第15周课堂实践总结

    <Java程序设计>第15周课堂实践总结 实践一 教材代码检查-p242 要求 在IDEA中或命令行中运行P242 StackTraceDemo2.java 代码运行结果和教材一致吗?为什 ...

  2. 最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础...

    最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础,加油吧 距离去北京还有23天 转载于:https://www.cnblogs.com/AceIsSunsh ...

  3. 20145209刘一阳《JAVA程序设计》第七周课堂测试

    第七周课堂测试 1.命令"CREATE DATABASE "用来创建一个数据库.(A) A .true B .false 2.以下不属于驱动的四种类型的是(C) A .JDBC-O ...

  4. python交互式程序设计导论第五周小测试答案_20145209刘一阳《JAVA程序设计》第五周课堂测试...

    第五周课堂测试 1.下列关于内部类的说法,正确的是(ABD) A .其他类不可以用某个类的内部类声明对象. B .内部类字节码文件的名字格式是"外嵌类名$内部类名". C .内部类 ...

  5. python语言程序设计实践教程实验八答案_清华大学出版社-图书详情-《Java程序设计教程及实验指导》...

    前言 Java程序设计教程及实验指导Java是一门主流的面向对象的程序设计语言,是面向对象程序设计教学的主流语言.本书由有多年教学经验的专业教师编写,分为教程以及实验与课程设计两部分.教程部分从Jav ...

  6. Java程序设计教程与实训_Java程序设计教程与项目实训

    Java程序设计教程与项目实训 编辑 锁定 讨论 上传视频 <Java程序设计教程与项目实训>是2017年8月清华大学出版社出版的图书,作者是温秀梅.司亚超. 书    名 Java程序设 ...

  7. java程序设计教程与项目_Java程序设计教程与项目实训

    书名:Java程序设计教程与项目实训 作者:温秀梅.司亚超 出版社:清华大学出版社 出版日期:2017/8/1 字数: 页数: 版次: ISBN:9787#302473701 定价:49.5 目录 章 ...

  8. 2018.10.12 第1周的第2次小组讨论

    2018.10.12 第1周的第2次小组讨论 签到表 问题陈述 小组分工 签到表 学号 姓名 状态 1120151719 马小东 到 1120151725 王鹏宇 到 1120151726 杨钦凯 到 ...

  9. 20155222 2016-2017-2 《Java程序设计》第8周学习总结

    20155222 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从J ...

最新文章

  1. opencv python 多帧降噪算法_防抖技术 | OpenCV实现视频稳流
  2. 你觉得 ThreadLocalRandom 这玩意真的安全吗?
  3. oracle 取前10条记录
  4. ASP.NET Core中显示自定义错误页面-增强版
  5. 工业用微型计算机(15)-指令系统(10)
  6. LeetCode 第 207 场周赛(245/4115,前5.95%)
  7. Mysql yum 安装后,一些重要的文件路径
  8. 每日笔记---使用@ConfigurationProperties读取yml配置
  9. 国货当自强!华为未来 10 年 15% 收入将投入研发
  10. Java通过 p12 建立ssl链接
  11. istio:灰度发布与AB测试
  12. MySQL安装教程 + 安装包
  13. 参加科学教师与计算机培训总结,小学科学教师培训总结
  14. 导之以行——儿子喝酸奶篇
  15. 5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐
  16. 计算机同一优盘记录,怎么查看电脑插过U盘的记录
  17. Python matplotpy颜色表(python画图常用颜色)
  18. 银河麒麟操作系统搭建本地源
  19. 互联网数据标注员是做什么的?有什么发展前途吗?
  20. 为什么说手游代理是目前比较具有优势的创业方式呢?

热门文章

  1. cloudera manager 及CDH卸载
  2. 鸡啄米vc++2010系列35(工具栏资源及CToolBar类)
  3. Flex Socket 安全沙箱问题解决
  4. silverlight textblock 自动换行
  5. 【转】C#调用ADOX创建Access数据文件后关闭连接
  6. linux 网络地址
  7. linux GPIO驱动详解
  8. element ui登录界面_Vue和Element-UI做一个简单的登录页面
  9. Java中expecial,RxJava 学习笔记 (一)
  10. virtualbox 创建桥接网络_VirtualBox 桥接上网方式的配置