- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验周实验报告
1.排序的5种算法:1冒泡:void sort1(int *a,int n)//冒泡{int i,j;int temp;for(i=0;in-1;i++)for(j=n-2;j=i;j--){if(a[j]a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}相邻位置进行交换,较小的排到前面,第二层循环每次将最小的数值逐渐地像冒泡一样排到第一层循环的下标为i的位置,最终实现从小到大排序。2.选择法排序:void sort2(int *a,int n)//选择{int i,j,k;int temp;for(i=0;in-1;i++){k=i;for(j=k+1;jn;j++){if(a[k]a[j]){k=j;}}if(k!=i){temp=a[k];a[k]=a[i];a[i]=temp;}}}首层循环按顺序标记第i个元素(i=1,2,3……),第二层循环找出第i个元素之后比a[i]小的最小值,并将下标赋给k,比较k与i判断a[i]是否为最小值,否则将最小值交换在a[i]处,始终保证a[i]为最小的,实现数据从小到大排序。3. 插入法排序:void sort3(int *a,int n)//插入{int i,j,temp;for(i=0;in;i++){temp=a[i];j=i-1;while(j=0tempa[j]){a[j+1]=a[j];j--;}a[j+1]=temp;}}第一层循环按顺序找到一个数据标记,并开始找这个数据之前的比标记的数值大的数据,再将标记的数据插入到找到的数据之前(通过数组让位的方式插入数据)。4.shell法排序void sort4(int *a,int n)//shell{int i,j,temp,k;k=n/2;do{for(i=0;in;i+=k){temp=a[i];j=i-k;while(j=0tempa[j]){a[j+k]=a[j];j-=k;}a[j+k]=temp;}k=k/2;}while(k=1);}Shell法事实上是一种优化的选择法排序,先是在一定间距上进行排序(间隔为k),后来不断细化,减少了插入排序算法的时间复杂度。5.快速法排序:void sort5(int *a,int i,int j)//快速{int m,n,k,temp;m=i;n=j;k=a[j];do{while(a[m]kmj) m++;while(a[n]kni) n--;if(m=n){temp=a[m];a[m]=a[n];a[n]=temp;m++;n--;}}while(m=n);if(ni) sort5(a,i,n);if(mj) sort5(a,m,j);}运用递归的思路,在数组中找一个数作为中间量,比起小的数一律其放在前面,大的一律放在其后面,再在该中间量的前面和后面分别调用快速排序函数。2.伽罗华域上运算器问题相对较为简单,主要是工程建立以及多文件之间链接的问题。新建工程:File-New-Project-Win32 Console Application加入文件:将文件加入工程中,点击compile。#include stdafx.h#include gf.cint main(int argc, char* argv[]){gf_init(8,0x187);unsigned char a,b,result;char ch;scanf(%d%c%d,a,ch,b);switch(ch){case +:result=gf_add(a,b);break;case -:result=gf_sub(a,b);break;case *:result=gf_mul(a,b);break;case /:result=gf_div(a,b);break;}printf(result=%d\n,result);return 0;}3.超大整数相乘数据过大的整数相乘会不可避免的导致数据溢出,int,long,甚至long long相对于运算数来说也是不够的,因此要用数组的运算来代替类型的自己运算,输入自然用字符数组来储存,因此,采用字符串的形式(gets(),puts())。#includestdio.h#includestring.h#includestdlib.hvoid trans(char* str);//逆置数组乘法是从末尾开始计算的,因此将数组逆置,这样就可以从开始进行计算。void change(char *str);//字符数据化字符‘0’的ASCII码是48,因此将字符数据化方便进行计算要将每一个字符减去‘0’,变成0。void echange(char *str);//变回原数组void fuzhi(char *str,int a[],int n)
原创力文档


文档评论(0)