gpt4 book ai didi

c - C 中排序代码错误

转载 作者:行者123 更新时间:2023-11-30 19:51:06 25 4
gpt4 key购买 nike

我认为算法有问题。它显示错误的答案。我逐行更改,但没有得到正确的答案。

#include<stdio.h>

void sort(int a[],int n)
{
int gap,i,j,temp;
for(gap=n;gap>0;gap/=2)
{
for(i=gap;i<n;i+=1)
{
temp=a[i];

for(j=i;j>=gap&&a[j]>temp;j=gap)
a[j]=a[j];

a[j]=temp;
}
}
}

int main()
{
int a[20],i,n;

printf("Number of elements:");
scanf("%d",&n);

printf("Enter array elements:\n");
for(i=0;i<n;++i)
scanf("%d",&a[i]);

printf("Array elements before the sort:\n");
for(i=0;i<n;++i)
printf("%d",a[i]);

sort(a,n);

printf("\nAfter sort:\n");
for(i=0;i<n;++i)
printf("%d ",a[i]);

return 0;
}

请帮我处理这段代码。

最佳答案

你是对的,你的算法存在一些问题。在第 6 行中,间隙应该是 n/2,而不是 n。第 12 行应该是 j-gap。

纠正这些错误后,我重写了代码。希望它能有所帮助。干杯。

#include<stdio.h>

void sort(int a[],int n)
{
int gap,i,j,temp;
for(gap=n/2;gap>0;gap/=2)
{
for(i=gap;i<n;i+=1)
{
temp=a[i];

for(j=i;j>=gap&&a[j-gap]>temp;j-=gap)
a[j]=a[j-gap];

a[j]=temp;
}
}
}

int main()
{
int a[20],i,n;

printf("Number of elements:");
scanf("%d",&n);

printf("Enter array elements:\n");
for(i=0;i<n;++i)
scanf("%d",&a[i]);

printf("Array elements before the sort:\n");
for(i=0;i<n;++i)
printf("%d",a[i]);

sort(a,n);

printf("\nAfter shell sort:\n");
for(i=0;i<n;++i)
printf("%d ",a[i]);

return 0;
}

关于c - C 中排序代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50824401/

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