加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

算法实验报告----1

发布时间:2020-12-14 05:06:35 所属栏目:大数据 来源:网络整理
导读:一、? 实践题目 第一题:二分查找 二、? 问题描述 输入n值(1=n=1000),n个非降序排列的整数以及查找的数x,使用二分查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 三、? 算法描述 1.关键部分算法描述: ? int binary_search(vec

一、? 实践题目

第一题:二分查找

二、? 问题描述

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

三、? 算法描述

1.关键部分算法描述:

?

int binary_search(vector<int>v,int key)

{

?? ???????int left=1,right=v.size()-1,mid;

?? ???????while(left<=right)

?? ??????{

????? ??????? mid=(left+right)/2;

????? ??????? if(v[mid]<key) left=mid+1;

????? ??????? else if(v[mid]>key) right=mid-1;

????? ??????? else if(v[mid]==key) return mid;

? ???? ??}

?? ??? ??return -1;

}

??????? ? 2.首先查找这个序列是有序的,从中间开始查找,如果小于或大于中间值,那么相应的最高和最低下标就要更改为中间值减一或加一。如此重复直到找到相应的值为止。

四、? 算法时间及空间复杂度分析(要有分析过程)

时间复杂度:O(h)=O(log2n)

?

???????????????? 设共有n个元素,

??????? 经过while()的n值由n,n/2,n/4,…,n/2^k,由于n/2^k要取整,即令n/2^k = 1,可得k = log2n.

???????????????? 空间复杂度:0(n) = 1

???????

???????????????? 没有申请其他空间。

五、? 心得体会(对本次实践收获及疑惑进行总结)

  1. 一个组进行编写代码,效率比自己一个编写的时候要高。因为不用再某个地方卡很久,会有组员相互解释。

?

? ? ? ? ?2.更深一步理解了二分法,我觉得二分法是比较容易理解也比较容易实现的算法,但是二分法的要求是顺序存储以及数据都按照一定的规律排好序的,要求比较多,我们在实际应用的时候要根据需求灵活使用。

?

? ? ? ? ?3.PTA上的错误有时候让人摸不着头脑,我们应该怎么提高答题的准确率呢?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读