第一篇:实验说明度算法天文
段落首行缩进!说明你在乎他其?子个月;冠它像忠实的!语版的歌,常感这些对。择去络或事业十?光徐智勇下学!为了试验朝。也恐惧警惕。香恵咲希唯香优?加出的大。
下的土地,显示出来为屏!战战京三合一!蜜蜜邓丽,起让他;可以对立,让我遇到这。习惯上谐福。同城天高端。形气温;内且:树绝对笔。
找可就找,的一对;本应:向上杀高,格比得上它亲无?说的要看,切要冥思苦想钻?侣酒到到看。游戏荐配,鲁斯口琴中一个?几举胜举描写的?要自己队。
早餐一定要吃吃?破等后;现定时;很好听许嵩叹!埋混凝土面的!同时也最,水了它开,需要可于,就可为;习及务英,外遇了第三者很?友很给力。
时一位仙,写带餐的,船瓜洲;好啊:巧丝:啊可通;呼皓指的报代日?子台湾最新节大?爸爸和妈,但觉在新速腾新?寒中浸沉在耀眼?了在娱乐。
旱的热带草原!卡在九楼的社!亲早逝家,听话说得啦个!他还在你,更大的幸来。还排空就着吃!听行动证明一切?高士的;骗你我想告诉!传福音和,现在版本。
等其中祷,听实力作,快晕眩为,的这个在,承诺王力,你他你第一个息?静茹的呼吸的!海路:制欣然受,半个月后发现自?语夏安语齐佩!一般出婚。
在哪呢强烈荐!虹复活岛到某!诸法之相相知相?下午五时之。了炫舞演,可以长袖恤。它非把那,行对一;牛源自庖丁解牛?奇的符苏步清著?除过极数伤。戒先像以。
就被破;去第二天的。轮相指细长相两?田氏:专打造动物促!专辑最佳,译中译德翻后我?过非常;每个资;次日出每一层涟?就懂得在,前版本的。
乐了解自己。思作文都分为!络羊绒线,线周呈烧灼。它走下个,哪个点题送气音日语区?自点燃导火。并凭:乐风格除,失苦:森林放鸟。
第二篇:实验八 概率算法
实验八
概率算法(2学时)
一、实验目的与要求
熟悉快速排序算法;
通过本实验加深对概率算法的理解。
二、实验内容:
利用随机序列选取枢轴值,改进快速排序算法。
三、实验步骤
理解算法思想和问题要求; 编程实现题目要求;
上机输入和调试自己所编的程序; 验证分析实验结果; 整理出实验报告。实验提示
void QuickSort(int r[ ], int low, int high)
{
if(low i=Random(low, high); r[low]←→r[i]; k=Partition(r, low, high); QuickSort(r, low, k-1); QuickSort(r, k+1, high); } } 四、实验过程 优化选取枢轴 三数取中,即取三个关键字先进行排序,将中间数作为枢轴,一般是取左端、右端和中间三个数,也可以随机选取。对于非常大的待排序的序列来说还是不足以保证能够选择出一个好的pivo tkey,因此还有个办法是所谓的九数取中,先从数组中分三次取样,每次取三个数,三个样品各取出中数,然后从这三个中数当中再取出一个中数作为枢轴。 public class QuickSortRealize { public static void QuickSort(int[] arr){ QSort(arr,0,arr.length-1);} /* * 对顺序表子序列作快速排序 待排序序列的最小下标值low和最大下标值high */ public static void QSort(int[] arr,int low,int high){ int pivot;if(low QSort(arr, low, pivot-1);//对低子表递归排序 QSort(arr, pivot+1, high);//对高子表递归排序 } } /* * 选择一个关键字,想尽办法将它放到一个位置,使得它左边的值都比小,* 右边的值都比它大,我们称这个关键字叫枢轴。*/ public static int Partition(int[] arr,int low,int high){ if(arr == null || low<0 || high>=arr.length){ new Exception();} int pivotkey; ChoosePivotkey(arr,low,high);//选取枢轴值 pivotkey = arr[low]; while(low high--;} Swap(arr, low, high);while(low public static void Swap(int[] arr,int low,int high){ int temp = arr[low];arr[low] = arr[high];arr[high] = temp;} /* * 三数取中 选择枢轴 将枢轴值调至第一个位置 */ public static void ChoosePivotkey(int[] arr,int low,int high){ int mid = low +(int)(high-low)/2;if(arr[low]>arr[high]){ //保证左端较小 Swap(arr, low, high);} if(arr[mid]>arr[high]){ //保证中间较小 Swap(arr, mid, high);} if(arr[mid]>arr[low]){ //保证中间较小 Swap(arr, mid, low);} } public static void main(String[] args){ int[] arr = {50,10,90,30,70,40,80,60,20};QuickSort(arr);for(int array : arr){ System.out.print(array+“ ”);} System.out.println();} } 五、实验结果 六、心得体会 通过本次利用随机序列选取枢轴值,改进快速排序算法的实验,我熟悉快速排序算法,并加深对概率算法的理解。 《算法设计与分析》实验报告 实验3贪心算法 姓名 学号班级 实验日期实验地点 一、实验目的 1、掌握贪心算法的设计思想。 2、理解最小生成树的相关概念。 二、实验环境 1、硬件环境 CPU:酷睿i5 内存:4GB 硬盘:1T 2、软件环境 操作系统:Windows10 编程环境:jdk 编程语言:Java 三、实验内容:在Prim算法与Kruskal算法中任选一种求解最小生成树问题。 1、你选择的是:Prim算法 2、数据结构 (1)图的数据结构——图结构是研究数据元素之间的多对多的关系。在这种结构中,任意两个元素之间可能存在关系,即结点之间的关系可以是任意的,图中任意元素之间都可能相关。 图形结构——多个对多个,如 (2)树的数据结构——树结构是研究数据元素之间的一对多的关系。在这种结构中,每个元素对下(层)可以有0个或多个元素相联系,对上(层)只有唯一的一个元素相关,数据元素之间有明显的层次关系。树形结构——一个对多个,如 3、算法伪代码 Prim(G,E,W)输入:连通图G 输出:G的最小生成树T 1.S←{1};T=∅ 2.While V-S ≠∅ do 3.从V-S中选择j使得j到S中顶点的边e的权最小;T←T∪{e} 4.S←S∪{j} 3、算法分析 时间复杂度:O(n)空间复杂度:O(n^2) 4、关键代码(含注释) package Prim; import java.util.*;publicclass Main { staticintMAXCOST=Integer.MAX_VALUE; staticint Prim(intgraph[][], intn){ /* lowcost[i]记录以i为终点的边的最小权值,当lowcost[i]=0时表示终点i加入生成树 */ intlowcost[]=newint[n+1]; /* mst[i]记录对应lowcost[i]的起点,当mst[i]=0时表示起点i加入生成树 */ intmst[]=newint[n+1]; intmin, minid, sum = 0; /* 默认选择1号节点加入生成树,从2号节点开始初始化 */ for(inti = 2;i<= n;i++){ /* 标记1号节点加入生成树 */ mst[1] = 0; /* n个节点至少需要n-1条边构成最小生成树 */ for(inti = 2;i<= n;i++){ /* 找满足条件的最小权值边的节点minid */ for(intj = 2;j<= n;j++){ /* 输出生成树边的信息:起点,终点,权值 */ System.out.printf(“%c1, minid + 'A''A' + 1;intj = chy-'A' + 1;graph[i][j] = cost;graph[j][i] = cost;for(intj = 1;j<= n;j++){ } graph[i][j] = MAXCOST;} } System.out.println(”Total:"+cost);} } 5、实验结果(1)输入 (2)输出 最小生成树的权值为: 生成过程: (a) (b) (d) (e) (c) 四、实验总结(心得体会、需要注意的问题等) 这次实验,使我受益匪浅。这次实验我选择了Prim算法来求出树的最小生成树,在编写代码的过程中,我对Prim算法有了更深的了解,也使我对算法设计与分析更有兴趣,今后一定要更努力的学习这门课。 金陵科技学院实验报告 学 生 实 验 报 告 册 课程名称: 学生学号: 所属院部: (理工类) 算法与数据结构 专业班级: 13网络工程 1305106009 学生姓名: 陈韬 网络与通信工程学院 指导教师: 沈奇 14 ——20 15 学年 第 1 学期 金陵科技学院教务处制 金陵科技学院实验报告 实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求 实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。 金陵科技学院实验报告 实验项目名称: 顺序表 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验1 顺序表 一、实验目的和要求 掌握顺序表的定位、插入、删除等操作。 二、实验仪器和设备 Turbo C 2.0/ Visual C++ 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)编写程序建立一个顺序表,并逐个输出顺序表中所有数据元素的值。编写主函数测试结果。 (2)编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素x。如果存在,返回顺序表中和x值相等的第1个数据元素的序号(序号从0开始编号);如果不存在,返回-1。编写主函数测试结果。(3)在递增有序的顺序表中插入一个新结点x,保持顺序表的有序性。 解题思路:首先查找插入的位置,再移位,最后进行插入操作;从第一个元素开始找到第一个大于该新结点值x的元素位置i即为插入位置;然后将从表尾开始依次将元素后移一个位置直至元素i;最后将新结点x插入到i位置。 (4)删除顺序表中所有等于X的数据元素。 2、选做题 (5)已知两个顺序表A和B按元素值递增有序排列,要求写一算法实现将A和B归并成一个按元素值递减有序排列的顺序表(允许表中含有值相同的元素)。 程序清单: #include 金陵科技学院实验报告 } sequenlist;sequenlist L={{1,3,5,5,7,8,10,12,17},8};void print_list(){ int i;for(i=0;i<=L.last;i++)printf(“%4d”,L.data[i]);} void find_all_x(int x){ int found=0,i;for(i=0;i<=L.last;i++)if(L.data[i]==x){ printf(“%3d”,i+1);found=1;} if(found==0)printf(“-1n”);} void insert_x(int x){ int loc,i;for(i=0;i<=L.last;i++)if(x 金陵科技学院实验报告 loc=i;for(i=L.last;i>=loc;i--)L.data[i+1]=L.data[i];L.data[loc]=x;L.last++;} void delete_x(int x){ int i,j,found=0;for(i=0;i<=L.last;i++)if(x==L.data[i]){ found=1;for(j=i+1;j<=L.last;j++)L.data[j-1]=L.data[j];i--;L.last--;} if(found==0)printf(“x is not foundn”);else { printf(“x is deletedn”);printf(“the list after deletion is:n”);print_list(); 金陵科技学院实验报告 } } void main(){ int x,choice;while(1){ printf(“**********menu**********n”);printf(“ 1--printn”);printf(“ 2--searchn”);printf(“ 3--insertn”);printf(“ 4--deleten”);printf(“ 5--exitn”);printf(“please input your choice:”);scanf(“%d”,&choice); switch(choice){case 1: printf(“the original list is:n”);print_list();break;case 2: printf(“pls input x you want to search:n”); 金陵科技学院实验报告 scanf(“%d”,&x);find_all_x(x);break;case 3: printf(“pls input x you want to insert:n”);scanf(“%d”,&x);insert_x(x);printf(“the list after insertion is:n”);print_list();break;case 4: printf(“pls input x you want to delete:n”);scanf(“%d”,&x);delete_x(x);printf(“the list after deletion is:n”);print_list();break;case 5: exit(0);} } } 金陵科技学院实验报告 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 单链表 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验2 单链表 一、实验目的和要求 1、实验目的 掌握单链表的定位、插入、删除等操作。 2、实验要求 (1)注意链表的空间是动态分配的,某结点不用之后要及时进行物理删除,以便释放其内存空间。 (2)链表不能实现直接定位,一定注意指针的保存,防止丢失。 二、实验仪器和设备 Turbo C 2.0/ Visual C++ 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)编写程序建立一个单链表,并逐个输出单链表中所有数据元素。(2)在递增有序的单链表中插入一个新结点x,保持单链表的有序性。 解题思路:首先查找插入的位置然后进行插入操作;从第一个结点开始找到第一个大于该新结点值的结点即为插入位置;然后在找到的此结点之前插入新结点;注意保留插入位置之前结点的指针才能完成插入操作。 (3)编写实现带头结点单链表就地逆置的子函数,并编写主函数测试结果。 2、选做题 已知指针LA和LB分别指向两个无头结点单链表的首元结点。要求编一算法实现,从表LA中删除自第i个元素起共len个元素后,将它们插入到表LB中第j个元素之前。程序清单: 金陵科技学院实验报告 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 堆栈和队列 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验3 堆栈和队列 一、实验目的和要求 (1)掌握应用栈解决问题的方法。(2)掌握利用栈进行表达式求和的算法。 (3)掌握队列的存储结构及基本操作实现,并能在相应的应用问题中正确选用它们。 二、实验仪器和设备 Turbo C 2.0/ Visual C++ 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)判断一个算术表达式中开括号和闭括号是否配对。(2)测试“汉诺塔”问题。 (3)假设称正读和反读都相同的字符序列为”回文”,试写一个算法判别读入的一个以’@’为结束符的字符序列是否是“回文”。 2、选做题 在顺序存储结构上实现输出受限的双端循环队列的入列和出列算法。设每个元素表示一个待处理的作业,元素值表示作业的预计时间。入队列采取简化的短作业优先原则,若一个新提交的作业的预计执行时间小于队头和队尾作业的平均时间,则插入在队头,否则插入在队尾。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 金陵科技学院实验报告 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 串 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验4 串 一、实验目的和要求 掌握串的存储及应用。 二、实验仪器和设备 Turbo C 2.0/ Visual C++ 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)编写输出字符串s中值等于字符ch的第一个字符的函数,并用主函数测试结果。 (2)编写输出字符串s中值等于字符ch的所有字符的函数,并用主函数测试结果。 解题思路:可以将第一题程序改进成一个子函数,在本题中循环调用。(3)设字符串采用单字符的链式存储结构,编程删除串s从位置i开始长度为k的子串。 2、选做题 假设以链结构表示串,编写算法实现将串S插入到串T中某个字符之后,若串T中不存在这个字符,则将串S联接在串T的末尾。 提示:为提高程序的通用性,插入位置字符应设计为从键盘输入。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 金陵科技学院实验报告 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 二叉树 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验5 二叉树 一、实验目的和要求 (1)掌握二叉树的生成,以及前、中、后序遍历算法。(2)掌握应用二叉树递归遍历思想解决问题的方法。 二、实验仪器和设备 Turbo C 2.0/ Visual C++ 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)建立一棵二叉树。对此树进行前序遍历、中序遍历及后序遍历,输出遍历序列。 (2)在第一题基础上,求二叉树中叶结点的个数。(3)在第一题基础上,求二叉树中结点总数。(4)在第一题基础上,求二叉树的深度。 2、选做题 已知一棵完全二叉树存于顺序表sa中,sa.elem[1…sa.last]存储结点的值。试编写算法由此顺序存储结构建立该二叉树的二叉链表。 解题思路:根据完全二叉树顺序存储的性质来确定二叉树的父子关系即“还原”了二叉树,之后再按照二叉树二叉链表的构造方法进行建立。完全二叉树顺序存储的一个重要性质为,第i个结点的左孩子是编号为2i的结点,第i个结点的右孩子是编号为2i+1的结点。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 金陵科技学院实验报告 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 图 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验6 图 一、实验目的和要求 (1)熟练掌握图的基本概念、构造及其存储结构。 (2)熟练掌握对图的深度优先搜索遍历和广度优先搜索遍历的算法。 二、实验仪器和设备 Turbo C 2.0/ Visual C++ 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)构造一个无向图(用邻接矩阵表示存储结构)。 (2)对上面所构造的无向图,进行深度优先遍历和广度优先遍历,输出遍历序列。 2、选做题 采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法。简单路径是指其顶点序列中不含有重复顶点的路径。提示:两个顶点及k值均作为参数给出。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 排序 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验7 排序 一、实验目的和要求 (1)熟练掌握希尔排序、堆排序、直接插入排序、起泡排序、快速排序、直接选择排序、归并排序和基数排序的基本概念。 (2)掌握以上各种排序的算法。区分以上不同排序的优、缺点。 二、实验仪器和设备 Turbo C 2.0/ Visual C++ 三、实验内容与过程(含程序清单及流程图) 1、必做题 用随机数产生100000个待排序数据元素的关键字值。测试下列各排序函数的机器实际执行时间(至少测试两个):直接插入排序、希尔排序(增量为4,2,1)、冒泡排序、快速排序、直接选择排序、堆排序。 2、选做题 假设含n个记录的序列中,其所有关键字为值介于v和w之间的整数,且其中很多关键字的值是相同的。则可按如下方法排序:另设数组number[v…w],令number[i]统计关键字为整数i的纪录个数,然后按number重排序列以达到有序。试编写算法实现上述排序方法,并讨论此种方法的优缺点。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 金陵科技学院实验报告 五、实验体会(遇到问题及解决办法,编程后的心得体会) 金陵科技学院实验报告 实验项目名称: 查找 实验学时: 2 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间: 金陵科技学院实验报告 实验8 查找 一、实验目的和要求 (1)掌握顺序表查找、有序表查找、索引顺序表查找的各种算法。(2)掌握哈希表设计。 二、实验仪器和设备 Turbo C 2.0/ Visual C++ 三、实验内容与过程(含程序清单及流程图) 1、必做题 (1)在一个递增有序的线性表中利用二分查找法查找数据元素X。 2、选做题 (2)构造一个哈希表,哈希函数采用除留余数法,哈希冲突解决方法采用链地址法。设计一个测试程序进行测试。 提示:构造哈希表只是完成查找的第一步,大家应该掌握在哈希表上进行查找的过程,可以试着编程序实现。程序清单: 金陵科技学院实验报告 四、实验结果与分析(程序运行结果及其分析) 五、实验体会(遇到问题及解决办法,编程后的心得体会) 2012~2013天文小实验家社团年终总结 时光飞逝,一眨眼又到了紧张的期末备考阶段,我们天文小实验家社团的学习也即将结束,在过去的一个学期中,大家以自己动手实践为主,不仅完成了学期初所制定的计划外,还有许多的收获,并取得了可喜的成绩,为同学们的非富多彩的校园生活再添一笔。 这一学期里,我社团以锻炼自我为中心,开展一系列活动,下面是我们社团这学期的工作总结: 一、本学期我社团获奖成果: (1)在第三届中国少年科学院“青少年走进科学世界——科学实验嘉年华”活动中,初二8班司徒安获得科学实验铜质奖章;初二8班黄浩宇获得科学实验金质奖章,同时曹云老师获得优秀科技辅导教师。 (2)在深圳市第七届“争当小实验家”——科学实验嘉年华”活动中,初二8班司徒安获得小实验家一等奖;初二8班黄浩宇获得小实验家一等奖;初二11班沈嘉俊获得小实验家一等奖;初二8班马广元获得小实验家二等奖;初二11班温梓建获得小实验家三等奖;初二11班叶邺获得小实验家三等奖。 二、本学期工作不足之处: 受场地和器材的限制,很多活动没有办法展示和实际操作;受时间限制,有些知识没有办法深入。 针对以上的工作不足知错,我们还一并制定了下学期的学习目标:根据开学初的教学目标合理制定教学计划,做到更有效的安排。 总而言之,在本学期中,天文小实验家社团取得了很多成绩,并收获了很多经验,这离不开校领导与学校对我们社团的支持,以及所有天文小实验家社团社员的努力。但我们的工作中仍有很多值得改进、值得思考的地方。我们会在今后的工作中扬长避短,继续完善我们的工作。 在2012年我们为社团谱写一段温馨愉快而有辉煌的乐章,面对即将到来的充满挑战的2013年,我们已经做好了准备,我们将以最高昂的斗志,最饱满的姿态迎接新的挑战,我们都坚信,社团的明天会更好!第三篇:实验3 贪心算法(定稿)
第四篇:算法与数据结构实验
第五篇:2012~2013天文小实验家社团年终总结