C++勉強しようと思うんだけど・・・
■ このスレッドは過去ログ倉庫に格納されています
0288153
NGNGmainでの呼び出しが最高に間違っていました(鬱
void qsort( int *array, int first, int last )
{
int basis, small, big;
small = first;
big = last;
basis = array[ ( first + last ) / 2 ];
while ( 1 ) {
for ( ; array[ small ] < basis; ++small ) ;
for ( ; array[ big ] > basis; --big ) ;
if ( small >= big ) break;
swap( array[ small ], array[ big ] );
++small;
--big;
}
if ( small - 1 > first ) qsort( array, first, small - 1 );
if ( big + 1 < last ) qsort( array, big + 1, last );
}
でmainでの呼び出しを下のように修正。
qsort( list, 0, QTY - 1 );
以上でたぶんOKだと思うのですが、いかがでしょうか?
ただ、上のwhile文を下のように書くと上手くソートできないのですが
僕には違いがわかりません。どうぞどなたか理由を教えてください。
while ( small < big ) {
for ( ; array[ small ] < basis; ++small ) ;
for ( ; array[ big ] > basis; --big ) ;
if ( small < big ) {
swap( array[ small ], array[ big ] );
++small;
--big;
}
}
■ このスレッドは過去ログ倉庫に格納されています