변수를 사용하여 구조체 노드를 정렬하려고하는데 결과가 잘못 나온 것입니다.qsort 함수를 사용할 때 무슨 일이 발생 했습니까?
내 결과 :
{5, 4}, {6, 2}, {7, 3}, {4, 1}, {3, 7}, {1, 3}, {0, 0},
내 코드 :
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int x;
int y;
} n;
int num = 7;
int compare(const void *ele1, const void *ele2) {
n *px, *py;
px = (n *) ele1;
py = (n *) ele2;
return px->x < py->x;
}
int main() {
n node[7] = {
{4, 1},
{6, 2},
{1, 3},
{5, 4},
{7, 3},
{3, 7}
};
int i;
qsort(node, num, sizeof (node[0]), compare);
for (i = 0; i < num; i++)
printf("{%d, %d}, ", node[i].x, node[i].y);
return 0;
}
요소의 I 종류의 여섯 명 밖에 쌍, 결과 인 경우 :
올바른{7, 3}, {6, 2}, {5, 4}, {4, 1}, {1, 3}, {0, 0},
하지만, 7시에 시도했을 때 위의 결과가 표시됩니다. 왜 그런 일이 일어나는 지 아는 사람이 있습니까? 감사!
'qsort'는 C 표준 함수이며 비교 함수의 스펙은이 주석에도 적합합니다. "* 배열의 내용은 비교로 가리키는 비교 함수에 의해 오름차순으로 정렬됩니다. 비교되는 개체를 가리키는 두 개의 인수 첫 번째 인수가 각각 이하이거나 두 번째 인수보다 큰 것으로 간주되면이 함수는 0보다 큰 0보다 작거나 같은 정수를 반환합니다. * " –