0

各アイテムにnとmの2つの整数属性があるリストがあります。これらの2つの整数属性を単一の新しい属性にマップして、リストが新しい属性でソートされるときに、最初にnでソートされ、次にmでタイが切断されるようにします。

私はn-1/mを思いついた。したがって、2つの整数は単一の実数にマップされます。これでうまくいくと思います。より良いアイデアはありますか?

4

1 に答える 1

1

それは賢いので、私はあなたにそれを壊すことを嫌います、しかしそれはうまくいきません。n = 1,000,000,000、および999,999,990〜1,000,000,010のmの値を使用して(コンピューターで)試してください。n-1/mこれらすべてのケースで同じ値であることがわかります。

浮動小数点数の精度が無限である場合、またはintの2倍の精度である場合でも機能しますが(問題が発生する可能性があります)、そうではありません。倍精度浮動小数点数の精度は53ビットです。精度の。整数は(おそらく)32ビットであるため、そのうちの2つをエンコードするには少なくとも64ビットが必要です。ただし、その場合は、64ビット(long long)整数を使用して、ペアをとしてエンコードすることができますn*2^32 + m

于 2012-11-12T04:27:23.173 に答える