分治法之合并排序(C实现)
来源:互联网 发布:疯狂的美工装修助 编辑:程序博客网 时间:2024/05/22 13:07
#include <stdio.h> void merge(int a[],int p,int q,int r){ int n1=q-p+1,n2=r-q; int b1[n1]; int b2[n2]; int i=0,j=0,temp1=p,temp2=q; while(p<=q) { b1[i]=a[p]; ++i; ++p; } while(q+1<=r) { b2[j]=a[q+1]; ++j; ++q; } p=temp1;q=temp2; i=0,j=0; while(p<=r) { if(i==n1) { a[p]=b2[j]; ++j; } else if(j==n2) { a[p]=b1[i]; ++i; } else if(b1[i]<b2[j]) { a[p]=b1[i]; ++i; } else { a[p]=b2[j]; ++j; } ++p; }} void merge_sort(int a[],int p,int r){ int q=0; if(p<r) { q=(p+r)/2; merge_sort(a,p,q); merge_sort(a,q+1,r); merge(a,p,q,r); }} int main(){ int i, a[100]; srand(time(0)); for ( i = 1; i < 101; ++i ){ a[i-1] = rand() % 1001; printf( "%3d ", a[i-1] ); if(i%15==0) printf("\n"); } printf("\n\n"); SelectionSort(a, 100); for ( i = 1; i < 101; ++i ){ printf( "%3d ", a[i-1] ); if(i%15==0) printf("\n"); } getch(); return 0;}
运行效果图
0 0
- 分治法之合并排序(C实现)
- 分治法合并排序(C++)
- 算法之合并排序【分治法】【C语言】
- 合并排序(分治法)
- 分治法(合并排序)
- 分治法--用C++实现合并排序
- 分治法合并排序
- 分治法--合并排序
- 分治法合并排序
- 分治法-----合并排序
- 分治法--合并排序
- 合并排序(分治)
- 分治算法之合并排序
- 合并排序与分治法
- 排序3--合并(分治法)
- 分治法 合并排序递归
- 合并排序(分治递归)
- 算法导论-分治法-合并排序的Python&C++实现
- HDU 3068 最长回文 Manacher
- 解决eclipse快捷键冲突问题和修改eclipse快捷键
- 从”JAVA“而终 12:java集合框架API讲解
- hadoop技术原理
- Android入门---ImageView(图像视图)
- 分治法之合并排序(C实现)
- log4j.properties文件的配置不起作用
- (java)3sum
- UITableview reloadData 无效
- 9.5 编辑类
- Android 通过WiFi连接adb
- python3用pillow生成验证码,tornado中输出图片
- div随鼠标移动
- Unity3d使用高通Vuforia发布IOS工程遇见缺少插件问题解决