- 284 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 23:02:32 ]
- こんな感じかな?
void quick(Data a[], int left, int right, int Cmp(Data x, Data y, int order), int order){ int pl; int pr; Data x; while(1) { pl =left; pr =right; x = a[(pl+pr)/2]; do { while(Cmp(x, a[pl], order)) pl++; while(Cmp(a[pr], x, order)) pr--; if ( pl <= pr ){ swap(Data , a[pl], a[pr]); pl++; pr--; } } while(pl <= pr ); if (left < pr) {right = pr; continue;} if (pl < right) {left = pl; continue;} break; } }
|

|