归并排序
来源:互联网 发布:linux jenkins 安装 编辑:程序博客网 时间:2024/06/01 12:36
#include <stdio.h>
#include <string.h>
#define INF 1<<16
#define maxn 10000
void Merge(int A[], int p, int q, int r){
int n1, n2, i, j, k;
int L[maxn + 1], R[maxn + 1];
n1 = q - p + 1;
n2 = r - q;
for (i = 1; i <= n1; i++)
L[i] = A[p + i - 1];
for (j = 1; j <= n2; j++)
R[j] = A[q + j];
L[n1 + 1] = INF;
R[n2 + 1] = INF;
for (k = p, i = 1, j = 1; k <= r; k++)
if (L[i] <= R[j])
A[k] = L[i++];
else
A[k] = R[j++];
}
void Merge_Sort(int A[], int p, int r){
int q;
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, j, n, A[maxn + 1];
printf("请输入数组个数\n");
scanf("%d", &n);
printf("请输入数组中数据\n");
for (i = 1; i <= n; i++)
scanf("%d", &A[i]);
Merge_Sort(A, 1, n);
for(i = 1; i <=n; i++)
printf("%d ", A[i]);
printf("\n");
return 0;
}
#include <string.h>
#define INF 1<<16
#define maxn 10000
void Merge(int A[], int p, int q, int r){
int n1, n2, i, j, k;
int L[maxn + 1], R[maxn + 1];
n1 = q - p + 1;
n2 = r - q;
for (i = 1; i <= n1; i++)
L[i] = A[p + i - 1];
for (j = 1; j <= n2; j++)
R[j] = A[q + j];
L[n1 + 1] = INF;
R[n2 + 1] = INF;
for (k = p, i = 1, j = 1; k <= r; k++)
if (L[i] <= R[j])
A[k] = L[i++];
else
A[k] = R[j++];
}
void Merge_Sort(int A[], int p, int r){
int q;
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, j, n, A[maxn + 1];
printf("请输入数组个数\n");
scanf("%d", &n);
printf("请输入数组中数据\n");
for (i = 1; i <= n; i++)
scanf("%d", &A[i]);
Merge_Sort(A, 1, n);
for(i = 1; i <=n; i++)
printf("%d ", A[i]);
printf("\n");
return 0;
}
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- cocos2d-x 优化(纹理渲染优化、资源缓存、内存优化)
- struts上传文件,验证失败表单数据丢失的原因
- K小数
- 文件磁盘统计_bat脚本
- 如何查看IIS的日志
- 归并排序
- 计算机科学中最重要的32个算法
- ios像素检测点击
- 快排
- js基础笔记
- ORA-12154: TNS: 无法解析指定的连接标识符
- 我的代码之美_自学的优点与缺点
- linux下的telnet服务安装
- intel GDT 图