归并排序-递归
2017-05-05 23:26
127 查看
#include<stdio.h> #define num 10 int a[num]; void Merging(int a[],int first,int mid,int end) { int i=first,m=mid; int j=mid+1,n=end; int k=0; int temp[num]; while(i<=m&&j<=n) { if(a[i]<a[j])temp[k++]=a[i++]; else temp[k++]=a[j++]; } while(i<=m) { temp[k++]=a[i++]; } while(j<=n) { temp[k++]=a[j++]; } for(int i=0;i<k;i++){ a[first+i]=temp[i]; } } void merge_sort(int a[], int start, int end) { int mid = (start+end)/2; if(start<end) { merge_sort(a, start, mid); merge_sort(a, mid+1, end); Merging(a, start, mid, end); } } int main() { printf("Please input a array: "); for(int i=0;i<num;i++){ scanf("%d",&a[i]); } merge_sort(a,0,num-1); printf("After the sort: "); for(int i=0;i<num;i++){ printf("%d ",a[i]); } return 0; }
相关文章推荐
- 归并排序 C++/Java 递归实现代码 -犯了菜鸟老毛病
- 排序算法之归并排序的递归与迭代实现方法
- 排序——归并排序(递归实现+迭代实现 )
- 5.比较排序之归并排序(非递归)
- 两种归并排序算法的实现:二路归并排序和基本归并排序(虚拟消除递归的二路归并排序)
- 归并排序(递归与非递归)
- 算法积累<2>归并排序非递归的实现
- 归并排序(递归版本)C实现~
- 分治法之归并排序(递归+分治)
- 排序-归并排序(递归版)
- 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现
- 归并排序的递归以及迭代两种实现和优化
- 无聊写排序之 ---- 归并排序(MergeSort) 递归实现
- 无聊写排序之 ---- 归并排序(MergeSort) 非递归实现
- 合并排序(归并排序)的递归和非递归
- 归并排序的非递归实现
- 改进归并排序消除递归Java实现
- 递归 —— 二分查找法 —— 归并排序
- 归并排序(非递归)
- 归并排序(非递归)