#include <stdio.h>
#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 でこのようなことは可能なのでしょうか。