浙大《数据结构》编程作业 01-复杂度3 二分查找
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
要查找X
在Data
中的位置,即数组下标(注意:元素从下标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 二分查找相关推荐
- 有序数组二分查找java_详解Java数据结构和算法(有序数组和二分查找)
一.概述 有序数组中常常用到二分查找,能提高查找的速度.今天,我们用顺序查找和二分查找实现数组的增删改查. 二.有序数组的优缺点 优点:查找速度比无序数组快多了 缺点:插入时要按排序方式把后面的数据进 ...
- Python数据结构与算法篇(五)-- 二分查找与二分答案
1 二分法介绍 1.1 定义 二分查找又称折半查找.二分搜索.折半搜索等,是一种在静态查找表中查找特定元素的算法. 所谓静态查找表,即只能对表内的元素做查找和读取操作,不允许插入或删除元素. 使用二分 ...
- 数据结构(六)散列查找 —— 编程作业01 :电话聊天狂人
数据结构系列内容的学习目录→\rightarrow→浙大版数据结构学习系列内容汇总. 题目描述: 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N( ...
- 数据结构(三)树 —— 编程作业 01 :树的同构
数据结构系列内容的学习目录 → \rightarrow →浙大版数据结构学习系列内容汇总. 题目描述: 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是&quo ...
- 2019级计算机学院数据结构编程作业,数据结构上机实验报告
时间:2019-05-12 08:38:58 作者:admin 数据结构实验报告 课程 数据结构 _ 院 系 专业班级 实验地点姓 名 学 号 实验时间 指导老师 数据结构上机实验报告1 一﹑实验名称 ...
- 算法 队列问题(浙大数据结构视频作业)
全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总 现采用大小为10的数组实现一个循环队列.设在某一时刻,队列为空且此时front和rear值均为5.经过若干操作后, ...
- 01-复杂度3 二分查找
这道题是一道函数题,题目给好相应接口让完成该子函数.给定的函数接口和结构体定义如下: #include <stdio.h> #include <stdlib.h>#define ...
- 【Java数据结构与算法】第十七章 二分查找(非递归)和分治算法(汉诺塔)
第十七章 二分查找(非递归)和分治算法(汉诺塔) 文章目录 第十七章 二分查找(非递归)和分治算法(汉诺塔) 一.二分查找 1.思路 2.代码实现 二.分治算法(汉诺塔) 1.概述 2.汉诺塔 一.二 ...
- MOOC浙大数据结构课后题记录——PTA数据结构题目集(全)
目录 第一周--最大子列和算法.二分查找 01-复杂度1 最大子列和问题 (20分) 01-复杂度2 Maximum Subsequence Sum (25分) 01-复杂度3 二分查找 (20分) ...
最新文章
- Web开发需弄懂的知识点(.NET)
- 用算法代替生物大脑,90后博士造出活的微型机器人登上Science子刊
- 用浏览器训练Tensorflow.js模型的18个技巧(上)
- python安装函数库pip网址_批量安装python库函数---pip
- javascript学习系列(9):原数组发生变化的情况
- java中一个数小于零_这段java程序怎样才能让“所输入的数小于0!”只输出一次,并且满足题目条件?...
- 设计导航-超全智能的设计师导航网站
- 2019牛客多校第二场E MAZE(线段树 + 矩阵)题解
- SSIS高级转换任务—导出列
- 地摊赚钱秘籍(视频)+地摊攻略玩法(新鲜出炉)
- 微信小程序自定义拍照和H5调用摄像头拍照
- 【PS】证件照修改尺寸
- 阿里云服务器使用不了rz、sz命令?
- docker制作alpine-kod镜像
- uniapp+nvue实现仿微信App聊天应用 —— 成功实现好友聊天+语音视频通话功能
- 网易VIP等级,QQ会员等级,TOMVIP邮箱多少钱?
- 玩转场景化推送,精准把握受众
- 从faces_glintasia的.rec数据集转换为jpg图片
- 电脑处理器多核心好还是高频率好?
- 数据库之《会员管理系统》
热门文章
- 微信支付之Native支付H5支付JSAPI支付退款
- Android 官方Sample
- QQ登录错误码:100044的解决办法
- 【雷达成像】基于CS算法实现合成孔径星载观测雷达数据成像附matlab代码
- 微信红包JAVA代码整理
- Java 8新的时间日期库,这二十个案例看完你还学不会算我的!!!
- 第一个超级计算机深蓝,为什么深蓝只是超级计算机,而Alpha GO是人工智能?
- 网盘下载工具 Mipony Pro v3.0.5 中文便携版
- C++ 标准模板库(STL)——适配器(Adaptor)
- Foxmail6下@yahoo.cn邮箱设置