要素を一時配列に移動せずに C で配列のサブセットを並べ替え、それらをコピーして戻す方法を探していました。私はqsortについてよく理解していないかもしれませんが、以下のコードはうまくいくはずです:
qsort(&my_struct_arr[1],3,sizeof(my_struct),my_struct_cmp);
//my_struct_arr is a 4 element array, where i want to sort from position 1 to 3
int my_struct_cmp(const void *a, const void *b)
{
my_struct A=*(my_struct*)a, B=*(my_struct*)b;
if(A.x-B.x < 0.01) return A.y-B.y;
return A.x-B.x;
}
typedef struct foo
{
float x, y;
} my_struct;
問題は、それが機能しないことです。
更新 1: わかりました、私は問題について完全に明確ではなかったようです。位置 1 から 3 までの配列を初期化したので、次のような要素を持つ配列があります。
{ { ValueFromPreviousIteration.x,ValueFromPreviousIteration.y }, {x1,y1}, {x2,y2}, {x3,y3} }
私の問題は、上記のように呼び出されたqsortが配列全体をソートするのに対し、最後の3つの要素のみをソートしたいということです。