报告上海交通大学网络教育课程Word格式.docx

上传人:b****1 文档编号:13365847 上传时间:2022-10-10 格式:DOCX 页数:22 大小:268.02KB
下载 相关 举报
报告上海交通大学网络教育课程Word格式.docx_第1页
第1页 / 共22页
报告上海交通大学网络教育课程Word格式.docx_第2页
第2页 / 共22页
报告上海交通大学网络教育课程Word格式.docx_第3页
第3页 / 共22页
报告上海交通大学网络教育课程Word格式.docx_第4页
第4页 / 共22页
报告上海交通大学网络教育课程Word格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

报告上海交通大学网络教育课程Word格式.docx

《报告上海交通大学网络教育课程Word格式.docx》由会员分享,可在线阅读,更多相关《报告上海交通大学网络教育课程Word格式.docx(22页珍藏版)》请在冰豆网上搜索。

报告上海交通大学网络教育课程Word格式.docx

1.验证实验1(折半查找)3

1.1实验目的3

1.2实验内容3

1.3算法思想、总体设计3

1.4算法设计4

1.5算法代码实现5

1.6代码测试6

2.验证实验2(简单选择排序算法验证)8

2.1实验目的8

2.2实验内容8

2.3算法思想、总体设计8

2.4算法设计8

2.5算法代码实现10

2.6代码测试11

3.实验设计1(直接插入排序基于单链表的实现)13

3.1实验目的13

3.2实验内容13

3.3算法思想、总体设计13

3.4算法设计13

3.5算法代码实现15

3.6代码测试15

3.7测试总结17

第三部分:

心得体会17

分工

角色

参与人员

完成任务简单描述

姓名/学号

联系方式

项目经理

实验项目选择,实验进度把控;

整体设计

对整体流程进行设计,并设计整个实验所用的数据结构;

算法设计

对各种操作进行算法设计;

代码编写

根据算法进行编码及调试;

测试

对程序执行过程及结果进行测试;

文档

编写实验报告。

实验报告

1.验证实验1(折半查找)

1.1实验目的

1.1.1掌握折半查找算法的基本思想;

1.1.2掌握折半查找算法的实现方法;

1.1.3掌握折半查找算法的时间性能。

1.2实验内容

1.2.1根据输入长度,生成一个升序排列的顺序表

1.2.2根据输入要查找的值,使用折半查找法(也叫二分查找法),使用递归算法进行查找。

1.2.3查询结果返回所在位置序号

1.3算法思想、总体设计

1.3.1结合同期课程,决定选用C#作为实验的工具语言。

1.3.2折半查找的操作对象为有序的顺序表,所以在试验中生成一个有序的数组作为实验对象。

1.3.3折半查找的算法思想是,将数列按有序化(递增或递减)排列,查找过程中先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。

通过一次比较,将查找区间缩小一半。

折半查找是一种高效的查找方法。

它可以明显减少比较次数,提高查找效率。

但是,折半查找的先决条件是查找表中的数据元素必须有序。

1.3.4时间复杂度为O(log2n)

1.3.5折半查找一般有3中算法,一般算法、递归算法、迭代算法,试验中选用递归算法作为实现方法。

1.4算法设计

1.4.1数据结构设计

折半查找的对象要求是有序的顺序表,所以实验对象定义为一个有序的数组。

//定义一个int型的数组,长度size由界面输入

list1=newint[size]

1.4.2算法执行流程图

1.4.2.1顺序表的建立

1.4.2.2折半查找算法(递归)

递归执行

1.5算法代码实现

//初始化顺序表

publicstringinitiatelist(intsize)//size传递来的顺序表长度参数

{

stringt="

"

;

//把生成的顺序表返回至text中显示

list1=newint[size];

inti;

for(i=0;

i<

size;

i++)//用循环生成升序的顺序表

list1[i]=i;

if(i==size-1)

t=t+list1[i].ToString();

else

t=t+list1[i].ToString()+"

"

}

return(t);

//对顺序表进行折半查找,使用递归算法

//分别传递r数组首地址,low查询的左边界,high查询的右边界,key所需查找的值

publicstringfindsearch(int[]r,intlow,inthigh,intKey)

intmid=(low+high)/2;

if(low<

high)

if(Key<

=r[mid])

returnfindsearch(r,low,mid,Key);

//递归执行

returnfindsearch(r,mid+1,high,Key);

elseif(low==high)

if(Key==r[mid])

return(low+1).ToString();

//返回找到值的位置,比数组序号+1

return("

无此数据!

);

1.6代码测试

1.6.1测试方法

采用黑盒测试方法进行测试

1.6.2测试数据准备

着重准备数组首末边界的值以及不符合条件的值进行查找,尽量试图发现bug错误。

1.6.3测试过程

1测试准备

1)输入所需顺序表长度

2)点击【生成有序数组】

3)返回生成的有序数组

2折半查找测试

1)输入要查找的值

2)点击【折半查找】按钮

3)在查找结果中核对结果

1.6.4测试总结

测试的结果符合设计要求,测试了各种边界数据,都符合设计要求,没有出现任何错误。

响应速度也符合算法的时间复杂度,没有出现速度慢等情况。

2.验证实验2(简单选择排序算法验证)

2.1实验目的

2.1.1掌握简单选择排序算法的基本思想.

2.1.2掌握简单选择排序算法的实现方法.

2.1.3验证简单选择排序算法的时间性能.

2.2实验内容

2.2.1对一组数据进行简单选择排序(按升序排列)

2.2.2为了更好理解单链表,这个实验使用单链表模型来操作。

2.2.3对无序的单链表进行选择排序(升序)

2.3算法思想、总体设计

2.3.1结合同期课程,决定选用C#作为实验的工具语言。

2.3.2采用单链表进行排序操作。

2.3.3简单选择排序的基本思想:

对待排序的序列进行若干趟处理,通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录和第i(1≤i≤n)个记录进行交换,这样一趟处理就能确定一个数的位置,对n个数如果确定n-1个数的位置,则这n个数就排序成功。

2.3.4选择排序的算法的时间复杂度为O(n2)。

并且排序是稳定的

2.4算法设计

2.4.1数据结构设计

使用一个单链表作为选择排序的操作对象

//单链表结构体定义

classSingleLink

privateintidata;

publicintData

{get

{returnidata;

set

{idata=value;

publicSingleLinknext;

publicSingleLink()

idata=-1;

next=null;

publicSingleLink(intdata)

{idata=data;

2.4.2算法执行流程图

2.4.2.1初始化单链表

2.4.2.2简单选择排序

i++

2.5算法代码实现

2.5.1单链表初始化

Randomr=newRandom();

//从1-100之间产生数

list.clear();

//单链表清空

for(inti=0;

dlblong;

i++)//根据所需长度,循环插入单链表节点

list.Insert(r.Next(100));

//节点插入操作

f++;

textBox1.Text=list.Display();

//返回整个单链表显示

2.5.2单链表选择排序

y=head;

flag=head.next;

intn=0,i,j,temp=0,biaoji;

y=head.next;

p=head.next;

q=head.next;

n-1;

i++)//第一层循环

flag=p;

q=p;

biaoji=q.Data;

for(j=i;

j<

j++)

if(q.next.Data<

biaoji)//内循环查找出未排序中的最小值

flag=q.next;

biaoji=q.next.Data;

q=q.next;

temp=p.Data;

//数据交换

p.Data=flag.Data;

flag.Data=temp;

p=p.next;

return(true);

2.6代码测试

2.6.1测试方法

2.6.2测试数据准备

各种排序方式下的排序结果情况,主要检查单链表指针是否有错误定位

2.6.3测试过程

1)输入所需单链表长度

2)点击【随机生成单链表】

3)返回生成的单链表结果

4)点击【选择排序】按钮

5)在结果序列中,显示排序完成后的单链表

生成单链表

选择排序并显示结果

2.7测试总结

测试的结果符合设计要求,多次生成不同长度的单链表,进行选择排序后所有结果都符合设计要求,没有出现任何单链表操作容易产生的指针溢出等问题。

软件运行正常。

3.实验设计1(直接插入排序基于单链表的实现)

3.1实验目的

3.1.1熟悉单链表的生成、插入、删除等操作

3.1.2熟悉基于单链表的直接插入算法

3.1.3熟悉使用指针交换单链表位置的方法

3.2实验内容

3.2.1单链表的生成、删除、插入等操作

3.2.2对无需单链表使用直接插入排序

3.2.3对无序的单链表进行选择排序(升序)

3.3算法思想、总体设计

3.3.1结合同期课程,决定选用C#作为实验的工具语言。

3.3.2直接插入算法过程藐视,将单链表划分为有序区和无序区,有序区只包含一个元素结点,依次取无序区中的每一个结点,在有序区中查找待插入结点的插入位置

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1