qsort和sort在这里有啥差别

这里的qsort改成sort就对了,不然就只过了28.%  
我寻思着我这cmp应该也没写错
求大佬赐教🤪
#include<stdio.h>
#include<stdlib.h>

long long i, j, k, n, m, M, co, s, ans, f, len;
long long a[200001], b[200001];

struct A
{
	long long x, y;
}c[200001];
int cmp(const void* a, const void* b)
{
    A* p1 = (A*)a;
    A* p2 = (A*)b;
    if(p1->x > p2->x)
        return 1;
    else if(p1->x == p2->x)
        return 0;
    else
        return -1;
         
}
int main() { scanf("%lld", &n); for (i = 1;i <= n;i++) scanf("%lld", &a[i]); for (i = 1;i <= n;i++) scanf("%lld", &b[i]); for (i = 1;i <= n;i++) c[i].x = a[i] + b[i], c[i].y = i; qsort(c + 1, n, sizeof(c[0]), cmp); for (i = n;i >= 1;i--) if (i % 2 == 1) printf("%lld ", c[i].y); printf("\n"); for (i = n;i >= 1;i--) if (i % 2 == 0) printf("%lld ", c[i].y); return 0; }

全部评论
你的cmp的排序顺序写反了,应该第一个返回-1,第二个返回1
2 回复
分享
发布于 2020-02-10 13:17

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务