首页 > 解决方案 > c qsort函数中的这个错误是什么

问题描述

我正在尝试使用 c++ 运行相同的计算函数,它可以按预期工作,但不能使用 c,请您告诉我哪里出了问题。我只是对比较值和递增答案的两个数组进行排序;

#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>

int compare_function(const void *a,const void *b) {
    int *x = (int *) a;
    int *y = (int *) b;
    return *x - *y;
}

int calculate(long long A[], long long G[],int t){
    int answer = 0;
    int j = 0;
    int i = 0;
    while (i < t) {
        if(G[i] > A[j]){
            i++;
            j++;
            answer++;
        } else {
            i++;
        }
    }
    return answer;
}

int main()
{
    int p; 
    scanf("%d", &p);

    while (p > 0){
        int t; 
        scanf("%d", &t);
        long long  G[t];
        long long  A[t];

        for(int i=0;i<t;i++)
            scanf("%d",&G[i]);
        for(int i=0;i<t;i++)
            scanf("%d",&A[i]);

        qsort(G,t,sizeof (long long ),compare_function);
        qsort(A,t,sizeof (long long ),compare_function);

        printf("%d\n", calculate(A,G,t));

        p--;
    }
}

我使用过 c(gcc 8.2.0) 并且一件奇怪的事情是每次我运行这个程序时我得到不同的输出。

    Array Input

    1
    10
    3 6 7 5 3 5 6 2 9 1 
    2 7 0 9 3 6 0 6 2 6 

    output: 6, expected : 7

    constraints
        1<= N <=100000
        0<= Array elemts <= LLONG_MAX

标签: calgorithmdata-structures

解决方案


推荐阅读