qq_36381285 2016-10-12 14:03 采纳率: 0%
浏览 647

归并法排序程序如下,为何无法运行?

#include
#include
#include
#include
using namespace std;

void merge(int a[], int p, int q, int r) {
int leftsize, rightsize, i, j, k;
leftsize = q - p + 1;
rightsize = r - q;
vector b(leftsize + 1, 0); // Define a vector with size of leftsize + 1 and initial value of 0
vector c(rightsize + 1, 0);// Define a vector with size of rightsize + 1 and initial value of 0
for(i=0;i<=leftsize;i++)
b[i]=a[i];
b[i+1]=0xffffff;
for(j=0;j<=rightsize;j++)
c[j]=a[(p+r)/2+j];
c[j+1]=0xffffff;
i=0;j=0;
for(k=0;k<=r;k++)
if(b[i]<=c[j])
a[k]=b[i++];
else
a[k]=c[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,p+1,r);
merge(a,p,q,r);
}

void testMerge_Sort() {
int a[8]={7,6,2,7,7,8,7,1}, i;
printf("Before sorting, array a is\n");
for (i = 0; i < sizeof(a)/sizeof(int); ++i)
printf("%d",a[i]);
merge_sort(a, 0, sizeof(a)/sizeof(int)-1);
printf("\nAfter sorting, array a is\n");
for (i = 0; i < sizeof(a)/sizeof(int); ++i)
printf("%d ", a[i]);
printf("\n");
}

int main() {
testMerge_Sort();
return 0;
}
谢谢大家

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-10-12 14:23
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?