C/C++の宿題を片付けます 95代目
■ このスレッドは過去ログ倉庫に格納されています
0326デフォルトの名無しさん
2007/09/08(土) 17:00:42表示するのはアイテムだけ。
#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;
}
■ このスレッドは過去ログ倉庫に格納されています