C言語なら俺に聞け! Part 97
■ このスレッドは過去ログ倉庫に格納されています
0109デフォルトの名無しさん
NGNG#include <stdlib.h>
#define N 6
int array[] = { 9, 0, 2, 5, 3, 2 }; // 適当な入力
int order[] = { 0, 1, 2, 3, 4, 5 }; // 0 から N-1 まで昇順
int shoujun(const int *a, const int *b){
/* ここに order[] に対する処理を加えたい */
return (*a-*b);
}
int main(){
int i;
qsort(array, N, sizeof(int), (int(*)(const void*, const void*))shoujun);
for(i=0;i<N;i++){ printf("%d ", array[i]); }
printf("\n");
for(i=0;i<N;i++){ printf("%d ", order[i]); }
printf("\n");
return 0;
}
stdlib.h の qsort() を使い、出力として
array[] = { 0, 2, 2, 3, 5, 9 }; 昇順に
order[] = { 1, 2, 5, 4, 3, 0 }; 元の array[] の要素の小さい添え字順
という操作を qsort で用いる関数に order[] に対する処理を加えて
行いたいと考えているのですがいまいち方法が分かりません。
そもそも qsort でこのようなことは可能なのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています