算法第二章实践

第一题:输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。

用二分搜索法,将若干个元素分成基本相同的两部分,x与a[n/2]比较,每次搜索数组的大小减一半。算法最坏情况下,时间复杂度为logn,空间复杂度是常数O(1)。算法大致为:若x=a[mid],则返回mid,若x<[mid],则right=mid-1,x>[mid]则left=mid+1

心得体会:该题的难点在于x不存在,输出-1和比较次数。由于返回值只有一个,所以可以用void在子函数直接输出次数,还有就是比较次数,我是用logn计算的。总的来说,掌握好二分搜索法,然后加上一些判断语句之类就差不多,当然这个算法是我3道题写得最久的,细节方面做得还不行,希望下次能有提高吧。

原文地址:https://www.cnblogs.com/ex-calibur/p/9784505.html

时间: 2024-11-02 23:23:22

算法第二章实践的相关文章

算法第二章实践报告

第一道题: 第一道题要求输出查找次数,一开始我们小组用了两个二分查找算法来实现一个返回下标,一个返回计数器的值.但后来经过老师指点,我们采取了全局变量,来作为计数器,其值也是查找次数. 第二道题: 第二道题要求找不到目标的时候可以返回最邻近的两个值的下标,所以我们又添加了i和j,在每次进行大小比较之后记住比较过的元素下标.最后只需要在找不到相应元素的时候输出i和j即可. 第三道题: 第三道题要求将两个序列重新整合之后再输出中位数.老师要求做出logn的算法,但因为对算法的不熟悉,我们小组在实践课

【实践报告】算法第二章实践报告

实践报告任选一题进行分析. 1.实践题目: 7-1 二分查找 输入n值(1<=n<=1000).n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数.若x不存在,输出-1和比较次数. 输入格式:输入共三行: 第一行是n值: 第二行是n个整数: 第三行是x值. 输出格式:输出x所在的下标(0~n-1)及比较次数.若x不存在,输出-1和比较次数. 2.问题描述: 输入n值(1<=n<=1000).n个非降序排列的整数以及要查找的数x,使

算法第二章实践上机实验报告

题目:二分法查找 问题描述:用二分法查找x,找到时输出x的下标和比较次数:找不到时输出-1和比较次数. 算法语言描述: 输入数组和要查找的数x 算法描述:将一个数组分为两半,设置一个中间量a[mid]与要查找的数x比较,设置一个变量表示比较次数cnt,每次比较后cnt+1.若相等则说明中间值是要找的数,输出中间值和比较次数.若a[mid]小于x,则在数组右边继续查找,若a[mid]大于x,则在数组左边继续查找.找不到则输出-1和查找次数. 代码实现: #include <iostream> u

09.19算法第二章上机实践报告

算法第二章上机实践报告 https://edu.cnblogs.com/campus/gdwywm/se1803/homework/7608 1.实践题目 7-3 两个有序序列的中位数 https://pintia.cn/problem-sets/1173827583729741824/problems/1173827629514764290 2.问题描述 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A ?0 ?? ,A ?1 ?? ,?,A ?N−1 ?

算法第二章心得

学了算法的第二章以后,我对于算法思想有了进一步的理解.分治法的化繁为简,化难为易的思想,在日常生活中也能很好地体现出来.如果应用得当,往往能起到峰回路转,茅塞顿开的效果. 第二章的PTA实践,第一第二题其实检验了我们对二分搜索的掌握,以及算法的改写能力.第三题我觉得有点难度,因为它给出的序列最大长度非常大(100000),这就不得不要重视算法的时间复杂度.一开始我是在Java上运行,恰恰就是在最大序列长度这里运行超时了,我认为这一现象是Java解释器效率较低导致的.因此我又重新用C++写了一遍.

『嗨威说』算法设计与分析 - 算法第二章上机实践报告(二分查找 / 改写二分搜索算法 / 两个有序序列的中位数)

本文索引目录: 一.PTA实验报告题1 : 二分查找 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 改写二分搜索算法 2.1 实践题目 2.2 问题描述 2.3 算法描述 2.4 算法时间及空间复杂度分析 三.PTA实验报告题3 : 两个有序序列的中位数 3.1 实践题目 3.2 问题描述 3.3 算法描述 3.4 算法时间及空间复杂度分析 四.实验心得体会(实践收获及疑惑) 一.PTA实验报告题1 : 二分查找 1.1 实践

【实践】算法第二章上机实践报告

1. 实践题目 7-3 两个有序序列的中位数 2. 问题描述 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A?0??,A?1??,?,A?N?1??的中位数指A?(N?1)/2??的值,即第?(N+1)/2?个数(A?0??为第1个数). Input 在一行中输出两个输入序列的并集序列的中位数. Sample 输入1: 5 1 3 5 7 9 2 3 4 5 6 输出1: 4 输入2: 6 -100 -10 1 1 1 1 -50 0 2 3 4 5 输出

大二上学期算法第二章上机实践

实践题目:两个有序序列的中位数 问题描述:已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0,A1,?,AN?1的中位数指A(N?1)/2的值,即?(N+1)/2?个数(A0为第1个数). 算法描述:用变量i和f作为两个数组的下标,依次比较并将两个数组所有元素归并成一个数组,最后直接输出合成数组第?(N+1)/2?个数.因为两个数组都是非降序序列,时间复杂度只有O(n). 另外,该题目忽略元素的重复,用二分法直接不断两个数组的中位数,最后得到两个中位数,较小

二分查找真的那么简单吗?——算法第二章上机实践报告

一.        实践题目 改写二分搜索算法 (20 分) 题目来源:<计算机算法设计与分析>,王晓东 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j.当搜索元素在数组中时,i和j相同,均为x在数组中的位置. 输入格式: 输入有两行: 第一行是n值和x值: 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔. 输出格式: 输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j.当搜索元素在