数据结构-二路归并-递归实现-C语言
来源:互联网 发布:数据分析师前景如何 编辑:程序博客网 时间:2024/06/05 00:24
/* * * 二路归并 递归实现 * * * */#include <stdio.h>#include <stdlib.h>//对一个元素或者多个有序元素进行合并void Merge(int Element[],int TmpA[],int L,int R,int RightEnd){ int LeftEnd,NumElements,Tmp; LeftEnd=R-1; Tmp=L; NumElements=RightEnd-L+1; while (L<=LeftEnd&&R<=RightEnd){ if(Element[L]<Element[R])TmpA[Tmp++]=Element[L++]; else TmpA[Tmp++]=Element[R++]; } while (L<=LeftEnd)TmpA[Tmp++]=Element[L++]; while (R<=RightEnd)TmpA[Tmp++]=Element[R++]; for(int i=0;i<NumElements;i++,RightEnd--)Element[RightEnd]=TmpA[RightEnd];}//核心递归排序函数//思路:递归致一个元素,然后对每一层进行归并排序,void Msort(int A[],int TmpA[],int L,int RightEnd){ int Center; if(L<RightEnd){ Center=(L+RightEnd)/2; Msort(A,TmpA,L,Center); Msort(A,TmpA,Center+1,RightEnd); Merge(A,TmpA,L,Center+1,RightEnd); }}//优化接口函数void MergeSort(int A[],int N){ int * TmpA; TmpA=(int *)malloc(N*sizeof(int)); if(TmpA!=NULL){ Msort(A,TmpA,0,N-1); free(TmpA); } else{ printf("空间不足!"); }}void showArr(int arr[],int N){ for(int i=0;i<N;i++){ printf("%d\t",arr[i]); } printf("\n");}int main(){ int arr5[5]={4,2,1,7,9}; int arr6[6]={7,4,2,1,9,7};// int c[10]={11,13,15,17,19,2,4,6,8,20};// int temp[10];// Merge(c,temp,0,5,9);// showArr(c,10); MergeSort(arr5,5); MergeSort(arr6,6); showArr(arr5,5); showArr(arr6,6);}
阅读全文
0 0
- 数据结构-二路归并-递归实现-C语言
- 数据结构-数组排序-二路归并-循环实现-C语言
- 二路归并排序c语言实现
- 二路归并算法非递归C实现
- 归并排序递归实现C语言
- 归并排序非递归实现C语言
- 归并排序 递归法 C语言 实现
- 数据结构之---C语言实现归并排序
- 【算法】归并--C语言实现归并排序递归算法
- 二路归并排序(C语言实现)
- 二路归并排序算法实现-完整C语言程序
- 数据结构 二路归并排序的实现
- 归并排序 C语言数据结构
- 数据结构--二路归并
- 数据结构之归并排序(递归实现)
- C语言-数据结构-归并排序(merge sort)-递归 迭代-源代码及分析
- C语言实现2路归并排序
- 递归实现自顶向下的二路归并排序
- HDU
- ajax同步请求执行顺序
- 各大网站CSS样式初始化、
- 插入排序
- oracle connect by用法篇
- 数据结构-二路归并-递归实现-C语言
- [qbxt考试Day2.T1] video
- 决策树学习笔记
- 如何理解html,xml,json作用
- PAT 甲级 1073. Scientific Notation (20)
- TCP粘包,拆包
- 第十八课 使用视图
- bzoj 2464 中山市选[2009]小明的游戏
- scanf gets getchar cin cin.get getline 总结