>318
表示するのはアイテムだけ。
#include <stdio.h>
typedef struct {
    double div;
    int item;
} st;
void mergesort(st *p, st *temp, int left, int right)
{
    int i, j, k, mid = (left + right) / 2;
    if(left >= right) return;
    mergesort(p, temp, left, mid);
    mergesort(p, temp, mid + 1, right);
    for(i=left; i<=mid; i++) temp[i] = p[i];
    for(j=right; i<=right; i++, j--) temp[i] = p[j];
    i = left;
    j = right;
    for(k=left; k<=right; k++) p[k] = temp[i].div < temp[j].div ? temp[i++] : temp[j--];
}
int main(void)
{
    int i, p[10] = {12,15,22,88,43,55,23,91,15,78}, w[10] = {3,4,7,41,32,18,12,64,7,33};
    st data[10], temp[10];
    for(i=0; i<10; i++) {
        data[i].item = i + 1;
        data[i].div = (double)p[i] / w[i];
    }
    mergesort(data, temp, 0, 9);
    for(i=0; i<10; i++) printf("%d ", data[i].item);
    return 0;
}