ビット演算
■ このスレッドは過去ログ倉庫に格納されています
0280笹井奈琴
2006/01/14(土) 00:20:45static void bi_sort( int* a, int* b ) {
int d = ( *a ^ *b ) & -( ((unsigned int)*b - *a) >> 31 );
*a ^= d;
*b ^= d;
}
#define BI(x,y) bi_sort( a+x, a+y );
void oct_sort( int* a ) {
BI( 0, 1 ) BI( 2, 3 ) BI( 4, 5 ) BI( 6, 7 )
BI( 0, 2 ) BI( 1, 3 ) BI( 4, 6 ) BI( 5, 7 )
BI( 0, 4 ) BI( 3, 7 )
BI( 1, 2 ) BI( 3, 4 ) BI( 5, 6 )
BI( 1, 3 ) BI( 2, 4 )
BI( 1, 5 ) BI( 4, 6 )
BI( 2, 3 ) BI( 4, 5 )
BI( 2, 4 ) BI( 3, 5 )
BI( 3, 4 )
}
■ このスレッドは過去ログ倉庫に格納されています