归并排序
来源:互联网 发布:弓箭在淘宝上买几元 编辑:程序博客网 时间:2024/06/07 10:28
int* divide(int *data,int size)
4 {
5 int *left =NULL,*right=NULL;
6 int *des = NULL;
7 int i ,j,z= 0;
8 if (size == 1)
9 return data;
10 int j_n = size/2;
11 left = divide(data,j_n);
12 right = divide(data+j_n,size-j_n);
13 des = (int*)malloc(size*sizeof(int)*2);
14 for (i = 0,j=0; i<j_n && j < size-j_n;)
15 {
16 if (left[i] < right[j])
17 {
18 des[z] = left[i];
19 z++;
20 i++;
}
22 else
23 {
24 des[z]=right[j];
25 z++;
26 j++;
27 }
28 }
29 if (i == j_n)
30 {
31 memcpy(des+z,right+j,(size-j_n-j)*4);
32 }
33 if (j == size - j_n)
34 {
35 memcpy(des+z,left+i,(j_n-i)*4);
36 }
37 return des;
38 }
39
40
41 #define LEN 10
42 int main()
43 {
44 int buf[10]={123,432,4124,2351,1,1,1,5,42,10};
45 int buf1[LEN] = {4,1,2,5 ,9};
46 int *des=NULL;
4 {
5 int *left =NULL,*right=NULL;
6 int *des = NULL;
7 int i ,j,z= 0;
8 if (size == 1)
9 return data;
10 int j_n = size/2;
11 left = divide(data,j_n);
12 right = divide(data+j_n,size-j_n);
13 des = (int*)malloc(size*sizeof(int)*2);
14 for (i = 0,j=0; i<j_n && j < size-j_n;)
15 {
16 if (left[i] < right[j])
17 {
18 des[z] = left[i];
19 z++;
20 i++;
}
22 else
23 {
24 des[z]=right[j];
25 z++;
26 j++;
27 }
28 }
29 if (i == j_n)
30 {
31 memcpy(des+z,right+j,(size-j_n-j)*4);
32 }
33 if (j == size - j_n)
34 {
35 memcpy(des+z,left+i,(j_n-i)*4);
36 }
37 return des;
38 }
39
40
41 #define LEN 10
42 int main()
43 {
44 int buf[10]={123,432,4124,2351,1,1,1,5,42,10};
45 int buf1[LEN] = {4,1,2,5 ,9};
46 int *des=NULL;
47 des = divide(buf,LEN);
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- el表达式
- 为什么RTP往往是使用UDP,而不是使用TCP封装
- TI C6000优化手册——让代码看起来像钉子
- git commit 遇到error: pathspec
- 2的N次方 用数组
- 归并排序
- Android Studio常用断点调试功能
- 用栈实现括号匹配的算法
- Debian8.6 Issue update the 163 mirror
- oracle加密表空间
- LeetCode 112. Path Sum
- Coco2D 安装《cocos2d installment》
- 文本分类的python实现-基于Xgboost算法
- OpenCV调试利器——Image Watch插件的安装和使用