实验报告

第五周总结&实验报告三

好久不见. 提交于 2019-11-30 12:59:09
总结:这周的学习效果没有达到目标,对各种的方法的使用不是很熟悉,还是要多理解书上的内容,多看看书,把每周的实验做好! 以下是这周的基本知识点: 一 .构造方法可以为类中的属性初始化,构造方法与类名称相同,无返回值类型声明,如果在类中没有明确地定义构造方法,则会自动生成一个无参数的什么都不做的构造方法,在一个类中的构造方法可以重载,但是每个类都至少有一个构造方法。 二 .String 类在 Java 中较为特殊, String 可以使用直接赋值的方式或者通过构造方法进行实例化。在 String 中比较内容时使用 equals 方法,而“ == ”比较的只是两个字符串的地址值。字符串的内容一旦声明则不可改变。 三 . 在 Java 中使用 this 关键字可以表示当前的对象,通过“ this. 属性”可以调用本类中的属性,通过“ this. 方法 () ”可以调用本类中的其他方法,通过 this() 的形式调用本类中的构造方法。 四 . 对象数组的使用要分为声明数组和为数组开辟空间两步。开辟空间后数组中的每个元素的内容都是 null 。 六 .Java 中使用包可以实现多人协作的开发模式,避免类名重复的麻烦。使用 package 关键字将一个类放入一个包中,使用 import 语句导入一个已有的包。 七 .Java 中的访问控制权限分为 4 种, private 、 default 、

算法第二章上机实验报告

好久不见. 提交于 2019-11-30 12:31:52
引论:针对pinta上实践第二题的分析 一、 实践题目 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 输入格式: 输入有两行: 第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。 输出格式: 输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。 提示:若x小于全部数值,则输出:-1 0 若x大于全部数值,则输出:n-1的值 n的值 输入样例: 在这里给出一组输入。例如: 6 5 2 4 6 8 10 12 输出样例: 在这里给出相应的输出。例如: 1 2 二、 题目描述 在第一题的算法上进行小幅度的调整,让调度停止的条件变成右大于左,可以解决输出两个相邻数的问题,同时,也可以解决输出n,n-1的问题。 三、 算法描述 include using namespace std; int leftnum=0; int rightnum=0; int binarySearch(int num[],int left,int right,int mubiao) { int mid; if(left>right) { leftnum = left; rightnum =

算法第二章上机实验报告

偶尔善良 提交于 2019-11-30 09:27:35
# 算法第二章上机实践报告 组员:高珞洋,何汶珊 ## 实践题目 **7-2 改写二分搜索算法** 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 输入有两行:第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。 输出格式:输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。 提示:若x小于全部数值,则输出:-1 0 若x大于全部数值,则输出:n-1的值 n的值 ## 问题描述 这道题和平常的二分搜索不同的地方子在于不需要中位数,而是需要表示所找数在数列中左右两个数的位置(如果找到则这两个位置相同,即为所找数的位置) 较为繁琐的是需要考虑的临界情况增加了,当所找数小于或大于所有数的时候都要额外讨论。 但是在课后,我们考虑到,输出的数要么是一样的(找到),要么就差一(找不到),那么我是不是可以只用一个数来表示,这样就不用两个变量表示左右两个数的位置了 根据上述想法,有了以下代码 ## 算法描述 算法主体为**biSearch**方法,设置position这个全局变量作为最终结果 我们规定,找不到的时候用position和position + 1作为结果

第二章上机实验报告

你。 提交于 2019-11-30 08:31:29
1.实践题目:输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 提交的代码: #include<iostream> using namespace std; int Search (int a[],int n, int x,int &t) { int l = 0; int r = n - 1; while (l <= r) { int mid = (l + r) / 2; if (x == a[mid]) { t++; return mid; } if (x > a[mid]) { t++; l = mid + 1; } else { t++; r = mid - 1;} } return -1; } int main() { int n; int a[1000]; int x,t = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; } cin >> x; cout << Search (a, n, x, t)<<endl; cout << t; return 0; } 第一道题思路其实很简单,就是二分法找目标数字,不过不知道是什么原因,在给调用函数传参的时候总是编译器报错

算法第一次实验报告:改写二分搜索算法的思路与分析

北战南征 提交于 2019-11-30 07:23:44
改写二分搜索算法 思路与分析 题目来源:《计算机算法设计与分析》,王晓东 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 输入格式: 输入有两行: 第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。 输出格式: 输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。 提示:若x小于全部数值,则输出:-1 0 若x大于全部数值,则输出:n-1的值 n的值 输入样例: 在这里给出一组输入。例如: 6 5 2 4 6 8 10 12 输出样例: 在这里给出相应的输出。例如: 1 2——————————————————————————————————分割线——————————————————————————————————————————————思路:对于能够找到的元素,只需要把这个下标再输出一遍即可。对于找不到的元素,我们从优化过的二分搜索算法着手。众所周知,二分搜索算法的左指针和右指针会渐渐靠近,如果要输出这个数离得最近的两个下标,不妨分析left和right的接近情况。【这里我用的是left>right的递归条件,这样子做除了简化代码,还有特殊用处】

算法第二章上机实验报告

孤街醉人 提交于 2019-11-30 06:35:56
一、实践题目:改写二分搜索算法 二、问题描述 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 输入格式: 输入有两行: 第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。 输出格式: 输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。 提示:若x小于全部数值,则输出:-1 0 若x大于全部数值,则输出:n-1的值 n的值 输入样例: 在这里给出一组输入。例如: 6 5 2 4 6 8 10 12 输出样例: 在这里给出相应的输出。例如: 1 2三、算法描述首先分类讨论X是属于以下哪一种情况:1.小于所有序列的值2.大于所有序列的值3.在序列里4.不在序列中,但是序列里分别有最小的大于X的数和最大的小于X的数对于1、2的情况只需要判断,然后直接输出对于3、4就需要通过递归的方式不断地折半查找直到找到X对于4的情况,笔者设计的算法是在折半查找的途中,捕捉到是4情况的X具体代码如下: #include<iostream> using namespace std; int compare(int x, int a[], int left, int right){

第二次实验报告:使用Packet Tracer分析应用层协议

徘徊边缘 提交于 2019-11-30 06:27:09
个人信息 姓名:黄通 学号:201821121080  班级:计算1813 目录 1 实验目的 2 实验内容 3. 实验报告 3.1 DNS 3.2 FTP 3.3 DHCP 3.4 smtp和pop3 3.5 其他应用层协议 (不作要求,但属于加分项) 一、 实验目的 熟练使用Packet Tracer工具。分析抓到的应用层协议数据包,深入理解应用层协议,包括语法、语义、时序。 二、实验内容 使用Packet Tracer,正确配置网络参数,抓取应用层协议的数据包并分析,协议包含DNS、FTP, DHCP, stmp, pop3。步骤包含: 建立网络拓扑结构 配置参数 抓包 分析数据包 三、 实验报告 建立网络拓扑结构    本网络由一台pc客户端和一台服务器组成。 1、 DNS 1)打开服务器的DNS,并配置相关参数。 2)将pc端的DNS地址改为与服务器相同的地址。 3)结果如下图 开通DNS后,即可通过域名来访问与IP相同的内容。 4)抓包并分析抓到的数据包 NAME:查询名 长度不固定,一般表示的就是需要查询的域名,也可以反向查询由IP地址查询域名 TYPE:查询类型 资源记录类型 CLASS:查询类 通常为1,表示Internet数据 TTL: 生存时间 以s为单位资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间

第二次实验报告:使用Packet Tracer分析应用层协议

荒凉一梦 提交于 2019-11-30 06:26:39
姓名:谢明亮 学号:201821121103 班级:1814 1、实验目的 熟练使用Packet Tracer工具。分析抓到的应用层协议数据包,深入理解应用层协议,包括语法、语义、时序。 2、实验内容 使用Packet Tracer,正确配置网络参数,抓取应用层协议的数据包并分析,协议包含DNS、FTP, DHCP, stmp, pop3。步骤包含: 建立网络拓扑结构 配置参数 抓包 分析数据包 3、实验报告 建立网络拓扑结构 首先按照实验一配置IP地址,并建立网络拓扑结构 3.1、DNS (1)配置参数 配置PC端IP地址 配置服务器端IP地址 设置域名 配置完成后,可通过域名(mingliang.xie)来访问,达到直接访问地址的效果 (2)抓包并分析抓到的数据包 DNS Query为请求报文 DNS Answer为响应报文 NAME:域名,长度不固定或2字节 TYPE:查询类型;此处为4,还可以有“1”表示由域名获得IPV4地址,或者“2”表示查询域名服务器 CLASS:查询类,通常为1,表明Internet数据 TTL:(Time to live)生存时间 LENGTH:资源数据长度 (3) 通过该实验产生新的疑问及解答 问题:互联网的域名结构是怎样构成的? 解答:例如 mail.cctv.com(其中分别对应三级域名,二级域名,顶级域名) 3.2、FTP (1)配置参数

算法第二章上机实验报告

◇◆丶佛笑我妖孽 提交于 2019-11-30 06:26:15
一、实践题目:二分查找 输入n值(1<=n<= 1000)、n个 非降序排列的整数 以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 输入格式: 输入共三行: 第一行是n值; 第二行是n个整数; 第三行是x值。 输出格式: 输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 输入样例: 4 1 2 3 4 1 输出样例: 0 2二、问题描述1.输入:第一行输入n值,第二行输入n个非降序排列的整数,第三行输入要查找的数x。2.用二分查找算法查找x3.输出:1)x存在,输出x的下标 & 比较次数 2)x不存在,输出 -1 & 比较次数三、算法描述1.输入整数n2.用for循环输入n个非降序的整数,存入数组a[]3.输入要查找的数x4.让l指向第一个数a[0],r指向最后一个数a[n-1],初始化mid=0,flag=0来记录有无找到x,cnt=0来记录比较次数5.用while循环来找x 1)mid=(l+r)/2 比较次数可以cnt加一 2) mid和x比较,如果找到的话 flag = 1,就输出mid和cnt;如果mid比x小,则把mid+1赋值给l,继续while循环,直到mid=x 或 l > r;如果比x大,则把mid-1赋值给l,继续while循环,直到mid=x 或 l > r;6

算法实验报告----1

守給你的承諾、 提交于 2019-11-30 06:26:00
一、 实践题目 第一题:二分查找 二、 问题描述 输入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 没有申请其他空间。 五、 心得体会(对本次实践收获及疑惑进行总结)