归并
来源:互联网 发布:淘宝申请浦发信用卡 编辑:程序博客网 时间:2024/04/27 14:54
#include "stdio.h"#include<malloc.h>//归并排序;把src数组分成两部分有序的,然后合并。void merg(int src[],int start,int mid,int end,int temp[]){int i=start,m=mid;int j=mid+1,e=end;int k=0;while(i<=mid&&j<=e){if(src[i]<=src[j]){temp[k++]=src[i++];}else{temp[k++]=src[j++];}}while(i<=m){temp[k++]=src[i++];}while(j<=e){temp[k++]=src[j++];}for (i = 0; i < k; i++) //最终src就是排列后的, src[start + i] = temp[i]; }void mergesort(int a[], int first, int last, int temp[]) { int mid ; if (first <last) { mid= (first + last) / 2; mergesort(a, first, mid, temp); //左边有序 mergesort(a, mid + 1, last, temp); //右边有序 merg(a, first, mid, last, temp); //再将二个有序数列合并 } } int MergeSort(int a[], int n) { int *p = (int*)malloc(n*sizeof(int)); if (p == NULL) return -1; mergesort(a, 0, n - 1, p); free(p); return 0; } void main(){ unsigned int sort[]={5099999,19992,9990,32,20,2999990,80,900991,20};//0-6;7-13 unsigned int dest[9]={0}; int a; MergeSort(sort,9); for(a=0;a<9;a++) { printf("dest[%d]=%d\n",a,sort[a]); } }
dest[0]=20dest[1]=20dest[2]=32dest[3]=80dest[4]=9990dest[5]=19992dest[6]=900991dest[7]=2999990dest[8]=5099999 Press any key to continue
0 0
- 归并
- 归并
- 归并
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 二路归并 && 插入归并 && 原地归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并算法
- 归并排序
- 归并排序
- 怎么恢复移动硬盘中毒了数据呢丨用什么方法恢复比较方便准确呢丨
- JS IE兼容性问题
- 读 高效程序员的45个习惯
- 一直火不起来的互联网电视
- android开发--第三方平台登录分享问题
- 归并
- MFC --- 状态栏 StatusBar
- 经验总结08--js处理cookie
- 使用Eclipse构建Maven的SpringMVC项目
- 看看python解释器缓存了多少数字[python]
- 对SetWindowExtEx、SetViewportExtEx调用的理解
- Android--Selector、shape详解
- 图片加载内存溢出
- 怎么恢复qq空间删除的日志文件呢