#include <stdio.h>
#include <stdlib.h>
typedef struct {
double x;
double y;
} data2d;
int
comp (const void *p1, const void *p2)
{
const data2d d1 = *(const data2d*)p1;
const data2d d2 = *(const data2d*)p2;
double x1 = d1.x,y1 = d1.y,x2 = d2.x, y2 = d2.y;
if( x1 < x2 ) return -1;
if( x1 > x2 ) return 1;
if( y1 < y2 ) return -1;
if( y1 > y2 ) return 1;
return 0;
}
int main()
{
int i = 0;
data2d
*xy
= calloc(10, sizeof*xy
);
xy[0].x = 1.2; xy[0].y = 1.019;
xy[1].x = 2.02; xy[1].y = 33.98;
xy[2].x = 3.25; xy[2].y = 321.2;
xy[3].x = 5.11; xy[3].y = 105.1;
xy[4].x = 5.11; xy[4].y = 78.77;
xy[5].x = 3.42; xy[5].y = 658.5;
xy[6].x = 3.42; xy[6].y = 688.8;
xy[7].x = 21.2; xy[7].y = 1.081;
xy[8].x = 100.2; xy[8].y = 132.4;
xy[9].x = 19.2; xy[9].y = 1.157;
for (i=0; i<10; i++)
printf("xy[%d].x = %.3f xy[%d].y = %.3f\n", i
, xy
[i
].
x, i
, xy
[i
].
y);
qsort(xy
, 10, sizeof*xy
, comp
);
for (i=0; i<10; i++)
printf("xy[%d].x = %.3f xy[%d].y = %.3f\n", i
, xy
[i
].
x, i
, xy
[i
].
y);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KIAp0eXBlZGVmIHN0cnVjdCB7CiAgICBkb3VibGUgeDsKICAgIGRvdWJsZSB5Owp9IGRhdGEyZDsKIAogCmludApjb21wIChjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCnsKICAgIGNvbnN0IGRhdGEyZCBkMSA9ICooY29uc3QgZGF0YTJkKilwMTsKICAgIGNvbnN0IGRhdGEyZCBkMiA9ICooY29uc3QgZGF0YTJkKilwMjsKICAgIGRvdWJsZSB4MSA9IGQxLngseTEgPSBkMS55LHgyID0gZDIueCwgeTIgPSBkMi55OwogICAgCiAgICBpZiggeDEgPCB4MiApIHJldHVybiAtMTsKICAgIGlmKCB4MSA+IHgyICkgcmV0dXJuIDE7CiAgICBpZiggeTEgPCB5MiApIHJldHVybiAtMTsKICAgIGlmKCB5MSA+IHkyICkgcmV0dXJuIDE7CiAgICByZXR1cm4gMDsKfQogCmludCBtYWluKCkKewogCiAgICBpbnQgaSA9IDA7CiAgICBkYXRhMmQgKnh5ID0gY2FsbG9jKDEwLCBzaXplb2YqeHkpOwogCiAgICB4eVswXS54ID0gMS4yOyAgICAgIHh5WzBdLnkgPSAxLjAxOTsKICAgIHh5WzFdLnggPSAyLjAyOyAgICAgeHlbMV0ueSA9IDMzLjk4OwogICAgeHlbMl0ueCA9IDMuMjU7ICAgICB4eVsyXS55ID0gMzIxLjI7CiAgICB4eVszXS54ID0gNS4xMTsgICAgICB4eVszXS55ID0gMTA1LjE7CiAgICB4eVs0XS54ID0gNS4xMTsgICAgIHh5WzRdLnkgPSA3OC43NzsKICAgIHh5WzVdLnggPSAzLjQyOyAgICAgeHlbNV0ueSA9IDY1OC41OwogICAgeHlbNl0ueCA9IDMuNDI7ICAgICB4eVs2XS55ID0gNjg4Ljg7CiAgICB4eVs3XS54ID0gMjEuMjsgICAgIHh5WzddLnkgPSAxLjA4MTsKICAgIHh5WzhdLnggPSAxMDAuMjsgICAgeHlbOF0ueSA9IDEzMi40OwogICAgeHlbOV0ueCA9IDE5LjI7ICAgICB4eVs5XS55ID0gMS4xNTc7CiAKICAgIHByaW50ZigiYmVmb3JlIHFzb3J0KClcbiIpOwogICAgcHJpbnRmKCI9PT09PT09PT09PT09PVxuIik7CiAgICBmb3IgKGk9MDsgaTwxMDsgaSsrKQogICAgICAgIHByaW50ZigieHlbJWRdLnggPSAlLjNmICAgeHlbJWRdLnkgPSAlLjNmXG4iLCBpLCB4eVtpXS54LCBpLCB4eVtpXS55KTsKIAogICAgcXNvcnQoeHksIDEwLCBzaXplb2YqeHksIGNvbXApOwogCiAgICBwcmludGYoImFmdGVyIHFzb3J0KClcbiIpOwogICAgcHJpbnRmKCI9PT09PT09PT09PT09PVxuIik7CiAgICBmb3IgKGk9MDsgaTwxMDsgaSsrKQogICAgICAgIHByaW50ZigieHlbJWRdLnggPSAlLjNmICAgeHlbJWRdLnkgPSAlLjNmXG4iLCBpLCB4eVtpXS54LCBpLCB4eVtpXS55KTsKIAogICAgZnJlZSh4eSk7CiAgICByZXR1cm4gMDsgCn0K