gpt4 book ai didi

c - MergeSort - 编译但不给出任何输出

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:52 26 4
gpt4 key购买 nike

这是基于 Cormen 书中给出的算法。我做错了什么?

#include <stdio.h>
#include <conio.h>

void mergesort(int a[],int,int);
void merge(int a[],int,int,int);

int main()
{
int i,num,a[50];

printf("Enter the number of elements : ");
scanf("%d",&num);

for(i=1;i<=num;i++)
{
printf("\n%d) ",i);
scanf("%d",&a[i]);
}

mergesort(a,1,num);

for(i=1;i<=num;i++)
{
printf("SoRTED ArrAy \n");
printf("\n%d) ",a[i]);
}

getch();

return 0;
}

void mergesort(int a[],int i, int k)
{
int j;
j=(i+k)/2;

while(i<k)
{
mergesort(a,i,j);
mergesort(a,j+1,k);
merge(a,i,j,k);
}
}

void merge(int a[],int p,int q,int r)
{
int i,j,k,n1,n2;

n1=q-p+1;
n2=r-q;

int l[n1],s[n2];

for(i=1;i<=n1;i++)
{
l[i]=a[p+i-1];
}

for(j=1;i<=n2;j++)
{
s[j]=a[q+j];
}

l[n1+1]=1000;
s[n2+1]=1000;

i=1;
j=1;

for(k=p;k<=r;k++)
{
if(l[k]<s[k])
{
a[k]=l[i];
i++;
}
else
{
a[k]=s[j];
j++;
}
}
}

最佳答案

主要问题是 ik 永远不会在 mergesort 函数的 while 循环中更新,从而导致无限循环。您可能甚至不需要 while 循环。

关于c - MergeSort - 编译但不给出任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7974810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com