C 带测量时间的气泡排序

C 带测量时间的气泡排序,c,C,有标题 main.c 语义 我使用调试器来查找我的任何问题。我的写函数不起作用,因为它认为n是0,但我输入了它。同时,时间的测量也不起作用,我得到了零。我真的不理解为什么我输入它时n是零。在主函数中,您将变量初始化为double,但在其他函数中,将其作为整数。 在read()中, 原型为void read(int*a,int*n) 但是您定义了void read(int*a,int a)并且在read()中,既然您提到了void类型,为什么要在“if条件”中返回0。如果您的编译器没有针对上述代码

有标题

main.c

语义


我使用调试器来查找我的任何问题。我的写函数不起作用,因为它认为n是0,但我输入了它。同时,时间的测量也不起作用,我得到了零。我真的不理解为什么我输入它时n是零。

在主函数中,您将变量初始化为double,但在其他函数中,将其作为整数。 在read()中, 原型为
void read(int*a,int*n)

但是您定义了
void read(int*a,int a)
并且在read()中,既然您提到了void类型,为什么要在“if条件”中返回0。

如果您的编译器没有针对上述代码中的各种错误向您发出任何警告,那么可能是时候获得一个新的编译器了。
int main()
{
    double *a = NULL ,n;
    read(&a,&n);
    clock_t start,stop;
    start = clock();
    bubblesort(a,n);
    stop = clock();
    float elapsedTime = (stop - start)/CLOCKS_PER_SEC;
    printf("%f",elapsedTime);
    write(a,n);

    free(a);
    return 0;
}
void read(int *a,int n)
{
    int i;
    scanf("%d",&n);
    a = (int*)malloc(n*sizeof(int));
    if(a == 0){printf("Error");return 0;}
    for(i = 0; i < n; ++i){
        a[i] = rand() % 100;
    }
}

void bubblesort(int *a,int n)
{
    int i,j,csere;

    for(i = 0; i < n-1; ++i){
        for(j = 0; j < n - i -1; ++j){
            if (a[j] > a[j + 1]){
                csere = a[j];
                a[j] = a[j + 1];
                a[j + 1] = csere;
            }
        }
    }
}
void write(int *a,int n)
{
    int i;
    for(i = 0; i < n; ++i){
        printf("%i ",a[i]);
    }
}
void read(int*,int*);
void write(int*,int);
void bubblesort(int*,int);