プログラミング真珠最初の章では、ソート6.1000整数を行使する

 

 

 

 

 

説明タイトル:10,000,000 1の整数で1000の無作為に選んだ整数(再利用可能)は、各整数を10回まで発生することがあります。昇順でこれらの整数。  

分析:1000の整数、我々は6,5は、文字の5つのアレイによってその{1、0、1、0、2を示し、それは3として表示された回数を記録する文字のサイズに応じて千万、1、5を使用することができ1}。1つの発生、最初の文字が記録されるように、2つの0回、0の記録など。

              その後、我々は左から右へ、I-インデックスは文字の数で、何回インデックス(あなたが出力したい整数インデックス)出力から注文します。出力は次のようになります1,3,5,5,6。それは魔法ではありません。整然とした店舗この種の、すなわち、ビット時間の複雑性O(N)は、空の完了しました

              インター複雑さは、どのような店を確認してください。

                このような場合もありますので、我々はビットマップを保存するために使用することができ、あなたは多くのスペースを節約し、高速なビット操作することができます。すべてのレコードは、整数と考えられるが、唯一の0または1ビット、少なくとも、10ワードの出現、どのような場合、アップの最大数を記録することができますすることができ

              (バイナリ表現ビン1111小数12月15日)4。そこで、我々は必要なその後千万整数(千万/ 2)5,000,000バイト、ニブル整数を記録するために使用することができます。必要な格納されたJava(5,000,000 / 4)1250000 int型それとINT型。

              1000文字以上(これらのスペースが今ないものにもかかわらず)多くのスペースを節約していません。しかし、我々はまだ最適化の精神を持っています。

    調製1:使用ビット整数を記録するため、我々は、関連する操作と操作の位置を理解しなければなりません。私たちは、追加ビットを実現する2つの方法を使用することができます。

               まず、例えば4にビットを追加し、科学での外観をしましょう。

                   (1)ビット加算器は、動作XORビットを完了するために使用することができる:BIN(0001)+ BIN(0001)= BIN(0001)^ BIN(0001)= BIN(0001)、この時点で留意キャリー無し結果ことそして、。

                   ビット加算器は、操作を完了するために使用することができる(2)キャリーを計算する:キャリー= [BIN(0001)&BIN(0001)] << 1 = BIN(0010)。

                   (3)次に、(1)及び(2)次いで、最終結果を加算して得られる:BIN(0001)+ BIN(0010)= BIN(0001)^ BIN(0010)+ [BIN(0001)&BIN (0001)] << 1 

                 今、私たちは最終的に来て、彼は2つのバイナリの和であり、そしてそれはうん追加を運ぶことは確かではないものを停止するために追加されたときにことを、そのキャリーが0ああに等しいです。

                光を見る突然感じていない、それは再帰的な追加操作まあ、キャリーは、エンド再帰に0に等しくなるまで、ということではありません。心臓の低いこと、そして私たちは、(操作が本当に虎ああのような激しいの波である)、この加算演算を実現するために再帰を使用することができます。

                その後、我々はそれについて、それを実現しました。

               わずか数行のコードでは、非常に単純ではありません。

    基本的なループレコーディングの値に基づいて、あなたはハンズオンコーディングを開始する前に、我々は最初のビット構成のストレージAPIを実現するために必要なものを理解する必要があり、整数配列で保存されたハーフバイトの整数を押すことで、その後、出力一連の操作:2-何がはい機能します。

                 1セット関数:整数の発生数がintに格納されています。halfSet(int型のval)

                 2.クリア機能:整数の出現回数はクリア。また、これは他の仕事(トークバック)のために、私たちのint配列を初期化することができます。halfClr(int型のval)

                 3.のgetValue機能:整数の出現数は、出力をリサイクルするために出します。getValue(int型のval)

          ここでは、大きな戦いにそれを開始します。

    実装:

              

DFD

 

 

おすすめ

転載: www.cnblogs.com/leafIcesun/p/11980112.html