gpt4 book ai didi

c - 输出显示不同

转载 作者:行者123 更新时间:2023-11-30 20:10:16 24 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
int a[6]={2,5,4,6,1,3};
int j,key,i,k;
for(j=1;j<6;++j)
{
key=a[j];
i=j-1;
while((i>=0)&&(a[i]>key))
{
a[i+i]=a[i];
i=i-1;
}
a[i+1]=key;
}

for(i=0;i<6;i++)
printf("%d\n",a[i]);
}

当我计算自己时,我得到 1,2,3,4,5,6,但输出是 2,4,5,6,1,3。

我很努力地尝试,但找不到这有什么问题。

最佳答案

您的程序中有一个拼写错误。

而不是

a[i+i]=a[i];

应该有

a[i+1]=a[i];

考虑到根据 C 标准,不带参数的函数 main 应声明为

int main( void )

在整个程序中使用“原始数字”也是一个坏主意。

最好将排序放入单独的函数中。

相应的程序可以是这样的

#include <stdio.h>

void insertion_sort(int *a, size_t n)
{
for (size_t i = 1; i < n; i++)
{
size_t j = i;
int value = a[i];

for (; j != 0 && value < a[j - 1]; --j)
{
a[j] = a[j - 1];
}

if (j != i) a[j] = value;
}
}

int main( void )
{
int a[] = { 2, 5, 4, 6, 1, 3 };
const size_t N = sizeof(a) / sizeof(*a);

for (size_t i = 0; i < N; i++)
{
printf("%2d ", a[i]);
}
putchar('\n');

insertion_sort(a, N);

for (size_t i = 0; i < N; i++)
{
printf("%2d ", a[i]);
}
putchar('\n');

return 0;
}

它的输出是

2  5  4  6  1  3
1 2 3 4 5 6

对于大数组,最好使用二分搜索而不是顺序比较。

关于c - 输出显示不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744562/

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