1

bsearch動機:(二分探索)を使用して、121ビットの非負の整数のソートされたリストをすばやく検索したいと思います(先行ゼロがある場合もありますが、すべて正確に121ビットです)。これらの整数は大きすぎて個々のsとして格納できないなどの理由で、 (GMPintを使用して)作成することを計画しています。mpz_t

マニュアルを見ると、GMPにはbsearch同等のものがありません(ただし、間違っている場合は修正してください)。これにより、次のようになります。

質問memcmp同じ数のビットが格納されている2つの非負の整数を比較するために、またはそれに類似したものを使用できますmpz_tか?もしそうなら、正しい構文は何ですか?

これが可能であれば、検索は非常に効率的です。

また、(a)C ++での高速検索を可能にするこれらの121ビット整数を格納するためのデータ構造、(b)を使用しない整数を検索するための方法に関する代替案も受け入れていますmemcmp

4

1 に答える 1

2

121ビット整数しかない場合は、ネイティブの128ビットint拡張機能を使用してみませんか:http://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html?memcpyのような「コストのかかる」操作を回避できるため、これははるかに高速であるはずです。すべての比較は1つの命令である必要があります。

于 2012-10-26T03:51:46.510 に答える