网站建设的意义,游戏软件开发定制,推广 高端网站设计,企业网站建设和管理数据结构实验报告
实验目的:
通过本次实验#xff0c;了解算法复杂度的分析方法#xff0c;掌握递归算法时间复杂度的递推计算过程。
实验内容#xff1a;
二路归并排序的算法设计和复杂度分析
实验过程#xff1a;
1.算法设计
第一步#xff0c;首先要将数组进行…数据结构实验报告
实验目的:
通过本次实验了解算法复杂度的分析方法掌握递归算法时间复杂度的递推计算过程。
实验内容
二路归并排序的算法设计和复杂度分析
实验过程
1.算法设计
第一步首先要将数组进行划分假设等待排序的数组是A[SIZE]我们每次从数组的中间开始划分。
1).假设等待划分的数组是A{high …low} (是A中的一小段)划分点是它的中点mid(lowhigh)/2
2).如果数组段只剩下一个元素比如A[5…5],划分出来也是(55)/25,A[5…5]也是它本身。
3).如果数组段是奇数项。比如A[3…5]35/24,划分为了A[3…4]A[5…5]
4).如果数组段是偶数段比如A[2...5],(25)/23(因为是int),划分为了A[23]A[4…5]均分
第二步划分必定是一递归的操作因此设计一个类似于二叉树遍历的递归代码。
1).函数名是mergeSort(A[],int low, int high),每次对A[low,high]进行划分划分为A[low…mid],A[mid1,high],然后再对这两段数组进行递归的划分。
2).划分到单一元素的时候进行合并操作
第三步合并操作
2.程序清单
#includestdio.h
#includemalloc.h
void disp(int a[],int n){int i;for(i0;in;i)printf(%d,a[i]);printf(\n);
}
void Merge(int a[],int low,int mid,int high){int * tmpa;int ilow,jmid1,k0;tmpa(int * )malloc((high-low1)*sizeof(int));while (imidjhigh)if(a[i]a[j]){tmpa[k]a[i];i;k;}else{tmpa[k]a[j];j;k;}while(imid){tmpa[k]a[i];i;k;}while(jhigh){tmpa[k]a[j];j;k;}for(k0,ilow;ihigh;k,i)a[i]tmpa[k];free(tmpa);
}
void MergePass(int a[],int length,int n){int i;for(i0;i2*length-1n;ii2*length)Merge(a,i,ilength-1,i2*length-1);if(ilength-1n)Merge(a,i,ilength-1,n-1);
}
void MergeSort(int a[],int low,int high){int mid;if(lowhigh){mid(lowhigh)/2;MergeSort(a,low,mid);MergeSort(a,mid1,high);Merge(a,low,mid,high);}
}
void main(){int n10;int a[]{2,5,1,7,10,6,9,4,3,8};printf(排序前:);disp(a,n);MergeSort(a,0,9);printf(排序后:);disp(a,n);
}
3.运行结果 4.算法复杂度分析 数组段是偶数段对于上述二路归并排序算法当有n个元素时需要[log2n]趟归并每一趟归并它的元素比较次数不超过n-1,元素移动次数都是n因此二路归并排序的时间复杂度O(nlog2n 假设MergeSort(a,0,n-1)算法的执行时间为Tn),显然Merge(a,0,n/2,n-1)合并操作的执行时间为O(n)所以得到以下递推公式 Tn1 当n1的时候 Tn2T(n/2)O(n) 当n1的时候 容易得出 T(n)O(nlog2n)。 实验总结
在这次实验中我学到很多东西加强了我的动手能力并且培养了我的独立思考能力。特别是在做实验报告时因为在做数据处理时出现很多问题如果不解决的话,将会很难的继续下去。还有动手这次实验使这门课的一些理论知识与实践相结合, 更加深刻了我对算法设计与分析这门课的认识。 生活
寒假留校上半年还好这学期开学就奇怪了从家里来了之后就一直发烧吃完退烧药之后消停了两天又发烧直到学校正式开学才消停反反复复了十来天。罢了总归又能活蹦乱跳了。 之前一直觉得自己性格特征不明显网上的东西很多都是刻板印象直到玩得熟的朋友说我线上活泼还好说话但线下很欠打tm是个杠精我才意识到欧好吧不过还是不喜欢给自己贴标签因为毕竟每个人都是独一无二的。(❁´◡❁)
上次经历了一些事情朋友说那么爱问原因的你怎么这回不问问他原因呢因为我认为无论是什么原因如果后悔了如果选择的不是我那就不属于我要么全部要么全不我永远值得世界上最好的东西是我的谁也抢不走不是我的那我更不稀罕。或许我的观念有一天会改变会意识到自己的狭隘但目前为止我尊重当下的自己。 生活小满胜万全现在 ,觉得每天都无比绚丽多彩。24节气快惊蛰了为什么喜欢春天和夏天呢因为它灿烂明媚热烈。
上次跟同学聊天偶然提到项目他说 嘿嘿谁得到夸夸和认可的时候不开心嘞 。
四级也过了去年大英赛省二今年的就不参加了那就剩下准备准备六级还有蓝桥杯了...... 本来是想拍这个表情包的 但是手机怎么放都不对,于是画风就变了也很不错了嘞 两个突发奇想的小女孩儿 3月1日傍晚 基本不追星但是高中的时候就喜欢张新成饰演的黎语冰现在看还是很喜欢 嘿嘿臭屁一下世界上怎么会有我这么棒棒哒的人儿天哪又是喜欢自己的一天。