gpt4 book ai didi

C heapsort一运行就崩溃,windows报错

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

我目前在这个堆排序上遇到了一些问题,我在编译时没有错误,但是,当我运行程序时,它崩溃了,因为在 Windows 中说它崩溃了,终端没有输出,只有来自的报告 Windows 。这是代码。该文件是一个简单的逐行文件,其中包含数字,其中包含 10,000 个元素。

#include<stdio.h>
void heapsort(int[],int);
void heapify(int[],int);
void adjust(int[],int);
int main() {
int n,i,a[10000];
// printf("\nEnter the limit:");
FILE *file;
file = fopen("input.txt", "r");
int j=0;
int num;
while(fscanf(file, "%d", &num) > 0) {
a[j] = num;
j++;
}
fclose(file);
// scanf("%d",&n);
// printf("\nEnter the elements:");
// for (i=0;i<n;i++)
// scanf("%d",&a[i]);
heapsort(a,n);
printf("\nThe Sorted Elements Are:\n");
for (i=0;i<n;i++)
printf("\t%d",a[i]);
printf("\n");
return 0;
}
void heapsort(int a[],int n) {
int i,t;
heapify(a,n);
for (i=n-1;i>0;i--) {
t = a[0];
a[0] = a[i];
a[i] = t;
adjust(a,i);
}
}
void heapify(int a[],int n) {
int k,i,j,item;
for (k=1;k<n;k++) {
item = a[k];
i = k;
j = (i-1)/2;
while((i>0)&&(item>a[j])) {
a[i] = a[j];
i = j;
j = (i-1)/2;
}
a[i] = item;
}
}
void adjust(int a[],int n) {
int i,j,item;
j = 0;
item = a[j];
i = 2*j+1;
while(i<=n-1) {
if(i+1 <= n-1)
if(a[i] <a[i+1])
i++;
if(item<a[i]) {
a[j] = a[i];
j = i;
i = 2*j+1;
} else
break;
}
a[j] = item;
}

最佳答案

局部(自动)变量未初始化。您正在将 n 传递给已定义但未初始化的函数 heapsort。我看到注释掉的代码会起作用,因为 n 是一个输入值。最好将 j 更改为 n 以保持一致。

关于C heapsort一运行就崩溃,windows报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36873232/

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