博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
归并排序(分治)
阅读量:4677 次
发布时间:2019-06-09

本文共 1730 字,大约阅读时间需要 5 分钟。

1 #include 
2 #include
3 4 void MerageSort(int *A, int low, int high); 5 void Merge(int *A, int low, int middle, int high); 6 7 int main() 8 { 9 10 int array[] = {
2, 3, 6, 5, 4, 3, 3};11 int low = 0, high = 7;12 13 int i = 0;14 for(i = low; i < high; i++)15 {16 printf("%d ", array[i]);17 }18 printf("\n");19 20 MerageSort(array, low, high - 1);21 22 23 system("pause");24 return 0;25 }26 27 void Merge(int *A, int low, int middle, int high)28 {29 int i = low, j = middle + 1;30 int m = middle, n = high;31 int k = 0;32 int *A1 = (int*)malloc((high - low + 1)*sizeof(int));33 printf("low = %d, middle = %d, high = %d\n", low, middle, high);34 35 while(i <= m && j <= n)36 {37 if(A[i] < A[j])38 {39 A1[k] = A[i];40 i++;41 }42 else43 {44 A1[k] = A[j];45 j++;46 }47 k++;48 }49 50 while(i <= m) //加到尾部51 {52 A1[k] = A[i];53 k++;54 i++;55 }56 57 while(j <= n) //加到尾部58 {59 A1[k] = A[j];60 k++;61 j++;62 }63 64 for(i = 0; i < high -low + 1; i++)65 {66 A[low + i] = A1[i];67 printf("%d ", A[low + i]);68 }69 printf("\n");70 71 free(A1);72 A1 = NULL;73 }74 75 76 void MerageSort(int *A, int low, int high)77 { 78 int middle = 0;79 if(low < high)80 {81 middle = (low + high)/2;82 MerageSort(A, low, middle);83 MerageSort(A, middle+1, high);84 Merge(A, low, middle, high);85 86 } 87 }

运行结果:

转载于:https://www.cnblogs.com/hdu-2010/p/3706170.html

你可能感兴趣的文章
JS中SetTimeOut和SetInterval方法的区别?
查看>>
Protocol Buffers proto语言语法说明
查看>>
Hibernate双向一对一对象关系模型映射
查看>>
正则表达式(下)
查看>>
熟悉常用的HDFS操作
查看>>
Linux自动化运维第十八课
查看>>
web 10
查看>>
jquery--动态篇
查看>>
npm 是干什么的
查看>>
Android开发之蓝牙(Bluetooth)操作(一)--扫描已经配对的蓝牙设备
查看>>
查找路径php.ini文件到底在哪里?
查看>>
传统认知PK网络认知 刚子扯谈烤串认知
查看>>
字节数组java加密与解密
查看>>
矩形运算
查看>>
php 备份mysql数据库(joomla数据库可直接使用,其他数据库稍作修改即可)
查看>>
使用HttpSessionListener接口监听Session的创建和失效
查看>>
Windows Phone XNAでアニメーション - ぐるぐる
查看>>
20181029 T2 寻宝游戏
查看>>
C++变量作用域、生存期、存储类别
查看>>
数据结构期末复习(四)
查看>>