- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C C 语言归并排序(合并排序)算法及代码 归并排序也称合并排序,其算法思想是将待排序序列分 为两部分,依次对分得的两个部分再次使用归并排序,之后 再对其进行合并。仅从算法思想上了解归并排序会觉得很抽 象,接下来就以对序列 A[0], A[l]…,A[n-1]进行升序排列来进 行讲解,在此采用自顶向下的实现方法,操作步骤如下。 ( 1 )将所要进行的排序序列分为左右两个部分,如果要进行 排序的序列的起始元素下标为 first ,最后一个元素的下标为 last,那么左右两部分之间的临界点下标 mid=(first+last)/2 , 这两部分分别是 A[first … mid] 和 A[mid+1 … last]。 (2)将上面所分得的两部分序列继续按照步骤 (1)继续进行划 分,直到划分的区间长度为1 分,直到划分的区间长度为 1。 (3)将划分结束后的序列进行归并排序,排序方法为对所分 的n个子序列进行两两合并,得到n/2或n/2+l个含有两个元 素的子序列,再对得到的子序列进行合并,直至得到一个长 度为 n 的有序序列为止。下面通过一段代码来看如何实现归 并排序。 #include #include #define N 7 void merge(int arr[], int low, int mid, int high){ int i, k; int *tmp = (int *)malloc((high-low+1)*sizeof(int)); //申请空间,使其大 小为两个 int left_low = low; int left_high = mid; int right_low = mid + 1; int right_high = high; for(k=0; left_lowleft_high right_lowright_high; k++){ // 比较两个 指针所指向的元素 if(arr[left_low]arr[right_low]){ tmp[k] = arr[left_low++]; }else{ tmp[k] = arr[right_low++]; } } if(left_low left_high){ // 若第一个序列有剩余,直接复制出 来粘到合并序列尾 //memcpy(tmp+k, arr+left_low, (left_high-left_low+l)*sizeof(int)); for(i=left_low;ileft_high;i++) tmp[k++] = arr[i]; } if(right_low right_high){ //若第二个序列有剩余, 直接复制 出来粘到合并序列尾 //memcpy(tmp+k, arr+right_low, (right_high-right_low+1)*sizeof(int)); for(i=right_low; iright_high; i++) tmp[k++] = arr[i]; } for(i=0; ihigh-low+1; i++) arr[low+i] = tmp[i]; free(tmp); return; } void merge_sort(int arr[], unsigned int first, unsigned int last){ int mid = 0; if(firstlast){ mid = (first+last)/2; /* 注 意防止溢出 */ /*mid = first/2 + last/2;*/ //mid = (first last) + ((first 八 last) 1); merge_sort(arr, first, mid); merge_sort(arr, mid+1,last); merge(arr,first,mid,last); } return; } int main(){ int i; int a[N]={32,12,56,78,76,45,36}; printf ( 排序前 \n); merge_sort(a,0,N-1); // merge_sort(a,0,N-1); // 排序 printf (\n 排序后 \n); for(i=0;iN;i++) printf(%d\t,a[i]); printf(\n);system(pause); return printf(%d\t,a[i]); printf(\n); system(pause); return 0; } #include #include #define N 7void merge(int arr[], int low, int mid, int high){ int i, k; int *tmp =
您可能关注的文档
- CEEC-CJ-70B温度冲击箱技术方案分析.docx
- CEPA下粤、港、澳会展整合发展制约因素与解决措施.docx
- CFD软件在传热学教学中的应用.docx
- CFS-JK8000用户信息传输装置用户使用说明书要点.docx
- CIA和FBI在智利911后的奇葩撕逼史(二).docx
- CIP在线清洗系统.docx
- CI策划-设计-培训-欣赏-CIS培训资料-ps炫目光照.docx
- CKOU剑道升级考试流程.docx
- cmd下修改文件访问控制权限.docx
- coreldrawx4第四章裁剪刻刀橡皮擦虚拟段删除等工具的认识与应用.docx
- C语言期末考试试题4答案.docx
- C语言程序设计教学现状与课程优化及改革措施-精品文档.docx
- c语言解释器parser剖析器笔记与心得.docx
- d10p公路桥梁隧道工程施工项目成本管理.docx
- DATALOAD完整应用手册.docx
- DBS射出成型不良要因与对策指导书WIformat.doc讲解.docx
- DCSW-B采购招标文件技术规范书-53快速备件维护保障技术服务.docx
- debian下安装denyhosts防止ssh暴力破解配置.docx
- DELL服务器通过sd卡安装系统(iDRACUsevFlash).docx
- delphi文件fileopenfileseek等的用法.docx
文档评论(0)