01-复杂度3 二分查找 (20分)

本题要求实现二分查找算法。(下面只列出部分定义)

函数接口定义:

Position BinarySearch( List L, ElementType X );

其中List结构定义如下:

typedef int Position;
typedef struct LNode *List;
struct LNode {ElementType Data[MAXSIZE];Position Last; /* 保存线性表中最后一个元素的位置 */
};

L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较,并且题目保证传入的数据是递增有序的。函数BinarySearch要查找XData中的位置,即数组下标(注意:元素从下标1开始存储)。找到则返回下标,否则返回一个特殊的失败标记NotFound
代码如下:

Position BinarySearch( List L, ElementType X ){Position p = 1;Position q = L->Last;Position ptr = 0;while(q > p + 1){ptr = (p + q) / 2;if(X > L->Data[ptr]){p = ptr;}else if(X < L->Data[ptr]){q = ptr;}else return ptr;}if(X == L->Data[p]) return p;if(X == L->Data[q]) return q;return NotFound;
}

关于“元素从下标1开始存储
错误理解:只有返回的position是从1开始,所以仍然初始化p=0,q=L->Last-1,求得Data索引后,返回索引+1即可
正确理解:本身Data数组就是从索引1开始存元素,即Data数组索引为0处不存元素。正确初始化p=1,q=L->Last

浙大《数据结构》编程作业 01-复杂度3 二分查找相关推荐

  1. 有序数组二分查找java_详解Java数据结构和算法(有序数组和二分查找)

    一.概述 有序数组中常常用到二分查找,能提高查找的速度.今天,我们用顺序查找和二分查找实现数组的增删改查. 二.有序数组的优缺点 优点:查找速度比无序数组快多了 缺点:插入时要按排序方式把后面的数据进 ...

  2. Python数据结构与算法篇(五)-- 二分查找与二分答案

    1 二分法介绍 1.1 定义 二分查找又称折半查找.二分搜索.折半搜索等,是一种在静态查找表中查找特定元素的算法. 所谓静态查找表,即只能对表内的元素做查找和读取操作,不允许插入或删除元素. 使用二分 ...

  3. 数据结构(六)散列查找 —— 编程作业01 :电话聊天狂人

    数据结构系列内容的学习目录→\rightarrow→浙大版数据结构学习系列内容汇总.   题目描述: 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人.   输入格式: 输入首先给出正整数N( ...

  4. 数据结构(三)树 —— 编程作业 01 :树的同构

    数据结构系列内容的学习目录 → \rightarrow →浙大版数据结构学习系列内容汇总.   题目描述: 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是&quo ...

  5. 2019级计算机学院数据结构编程作业,数据结构上机实验报告

    时间:2019-05-12 08:38:58 作者:admin 数据结构实验报告 课程 数据结构 _ 院 系 专业班级 实验地点姓 名 学 号 实验时间 指导老师 数据结构上机实验报告1 一﹑实验名称 ...

  6. 算法 队列问题(浙大数据结构视频作业)

    全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总 现采用大小为10的数组实现一个循环队列.设在某一时刻,队列为空且此时front和rear值均为5.经过若干操作后, ...

  7. 01-复杂度3 二分查找

    这道题是一道函数题,题目给好相应接口让完成该子函数.给定的函数接口和结构体定义如下: #include <stdio.h> #include <stdlib.h>#define ...

  8. 【Java数据结构与算法】第十七章 二分查找(非递归)和分治算法(汉诺塔)

    第十七章 二分查找(非递归)和分治算法(汉诺塔) 文章目录 第十七章 二分查找(非递归)和分治算法(汉诺塔) 一.二分查找 1.思路 2.代码实现 二.分治算法(汉诺塔) 1.概述 2.汉诺塔 一.二 ...

  9. MOOC浙大数据结构课后题记录——PTA数据结构题目集(全)

    目录 第一周--最大子列和算法.二分查找 01-复杂度1 最大子列和问题 (20分) 01-复杂度2 Maximum Subsequence Sum (25分) 01-复杂度3 二分查找 (20分) ...

最新文章

  1. Web开发需弄懂的知识点(.NET)
  2. 用算法代替生物大脑,90后博士造出活的微型机器人登上Science子刊
  3. 用浏览器训练Tensorflow.js模型的18个技巧(上)
  4. python安装函数库pip网址_批量安装python库函数---pip
  5. javascript学习系列(9):原数组发生变化的情况
  6. java中一个数小于零_这段java程序怎样才能让“所输入的数小于0!”只输出一次,并且满足题目条件?...
  7. 设计导航-超全智能的设计师导航网站
  8. 2019牛客多校第二场E MAZE(线段树 + 矩阵)题解
  9. SSIS高级转换任务—导出列
  10. 地摊赚钱秘籍(视频)+地摊攻略玩法(新鲜出炉)
  11. 微信小程序自定义拍照和H5调用摄像头拍照
  12. 【PS】证件照修改尺寸
  13. 阿里云服务器使用不了rz、sz命令?
  14. docker制作alpine-kod镜像
  15. uniapp+nvue实现仿微信App聊天应用 —— 成功实现好友聊天+语音视频通话功能
  16. 网易VIP等级,QQ会员等级,TOMVIP邮箱多少钱?
  17. 玩转场景化推送,精准把握受众
  18. 从faces_glintasia的.rec数据集转换为jpg图片
  19. 电脑处理器多核心好还是高频率好?
  20. 数据库之《会员管理系统》

热门文章

  1. 微信支付之Native支付H5支付JSAPI支付退款
  2. Android 官方Sample
  3. QQ登录错误码:100044的解决办法
  4. 【雷达成像】基于CS算法实现合成孔径星载观测雷达数据成像附matlab代码
  5. 微信红包JAVA代码整理
  6. Java 8新的时间日期库,这二十个案例看完你还学不会算我的!!!
  7. 第一个超级计算机深蓝,为什么深蓝只是超级计算机,而Alpha GO是人工智能?
  8. 网盘下载工具 Mipony Pro v3.0.5 中文便携版
  9. C++ 标准模板库(STL)——适配器(Adaptor)
  10. Foxmail6下@yahoo.cn邮箱设置