- 294 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:25:59 ]
- 修正?
void quick(Data a[], int left, int right, int Cmp(Data x, Data y, int order), int order){ int pl;int pr;Data x;int _right; _right = right; 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;} break; } left = 1;right = _right; 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 (pl < right) {left = pl; continue;} break; } }
|

|