- 380 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 01:22:08 ]
- >>378 バグ取りの報酬として、cmp_doubleを使わなくては駄目な理由を調べて教えてくれ(取れてなかったらゴメンナサイ…)。
int cmp_double(double x, double y) { return x > y ? 1 : x < y ? -1 : 0; } void mark_sort(Student *st, int left, int right){ int pl = left; int pr = right; double x = total(st[(pl + pr) / 2]); while(1){ while(cmp_double(total(st[pl]), x) > 0) pl++; while(cmp_double(total(st[pr]), x) < 0) pr--; if(pl >= pr){ break; } swap(st, pl, pr); pl++; pr--; } if(left < pl - 1) mark_sort(st, left, pl -1); if(pr + 1 < right) mark_sort(st, pr + 1, right); } >>379 ( ´_ゝ`)
|

|