第2のアルゴリズムの作業 - 第II章手アルゴリズム実験レポートの2つのレポート-7-3の数字の順序を命じました

II手が報告中央値アルゴリズムの章-7-3 2つの命じたシーケンス

 
7-3 2中央値は順序付けられたシーケンス(20分)
 

二つの既知の非等長降順シーケンスS1、S2、S1およびS2機能評価の設計と設定中央値があります。順序付けられたシーケンスは、中央値を意味A Nを- 1 / 2 の値、即ち、第一⌊数(0は数1です)。

入力フォーマット:

3行を入力します。最初の行は、共通の長さN(0のシーケンスが得られる<N すなわちN非整数の高い順に、行当たりの情報のシーケンスが続く≤100000)を、。スペースでデジタル間隔。

出力フォーマット:

行のシーケンスビットのセット二入出力配列。

サンプル入力1:

5
1 3 5 7 9
2 3 4 5 6

出力サンプル1:

4

サンプル入力2:

6
-100 -10 1 1 1 1
-50 0 2 3 4 5

出力サンプル2:

1

算法描述:
  1.先用一次归并排序将两个数组放在一个新创建的大小为2*num.length的数组中  2.对该数组进行去重,并用k记录新排序的数组的大小
  3.返回该数组的第k/2个元素

代码如下:

パブリックstatic int型ミッド(INT [] NUM1をINT [] NUM2){
  INT [] TEMP =新しいINT [2 * num1.length]。
  I = 0、J = 0、M = 0 int型。  
  一方、(I <num1.length && J <num2.length){
    TEMP [M ++] = NUM1 [I] <NUM2 [J] NUM1 [I ++]:NUM2 [J ++]。
  }
  (iはnum1.lengthを<){ながら
    TEMP [M ++] = NUM1 [I ++]。
  }
  一方、(J <num2.length){
    TEMP [M ++] = NUM2 [J ++]。
  }
  int型のk = 0。
  用(int型、L = 1であり、L <temp.length; L ++){
    IF(!TEMP [L] =温度[K]){
      TEMP [++ K] = TEMP [L]。
    }
  }

戻り温度[K / 2]。

}

複雑性分析:

  時間の複雑さ:3サイクルの合計でマージソート、プラスワンサイクルアップ重い、それはO(n)をする必要があります

  宇宙複雑:num.length *サイズ2の一時的な配列を作成し、それが(n)は、Oであるべき

概要:
  1.アイデアはシンプルですが、問題がある、Nの最大のテストケース、残業を実行するように見えます

  二値とまだ非常に精通していない、おなじみの分割統治を継続する必要があります。

 

7-3 2中央値は順序付けられたシーケンス(20分)
 

二つの既知の非等長降順シーケンスS1、S2、S1およびS2機能評価の設計と設定中央値があります。順序付けられたシーケンスは、中央値を意味A Nを- 1 / 2 の値、即ち、第一⌊数(0は数1です)。

入力フォーマット:

3行を入力します。最初の行は、共通の長さN(0のシーケンスが得られる<N すなわちN非整数の高い順に、行当たりの情報のシーケンスが続く≤100000)を、。スペースでデジタル間隔。

出力フォーマット:

行のシーケンスビットのセット二入出力配列。

サンプル入力1:

5
1 3 5 7 9
2 3 4 5 6

出力サンプル1:

4

サンプル入力2:

6
-100 -10 1 1 1 1
-50 0 2 3 4 5

出力サンプル2:

1

算法描述:
  1.先用一次归并排序将两个数组放在一个新创建的大小为2*num.length的数组中  2.对该数组进行去重,并用k记录新排序的数组的大小
  3.返回该数组的第k/2个元素

代码如下:

パブリックstatic int型ミッド(INT [] NUM1をINT [] NUM2){
  INT [] TEMP =新しいINT [2 * num1.length]。
  I = 0、J = 0、M = 0 int型。  
  一方、(I <num1.length && J <num2.length){
    TEMP [M ++] = NUM1 [I] <NUM2 [J] NUM1 [I ++]:NUM2 [J ++]。
  }
  (iはnum1.lengthを<){ながら
    TEMP [M ++] = NUM1 [I ++]。
  }
  一方、(J <num2.length){
    TEMP [M ++] = NUM2 [J ++]。
  }
  int型のk = 0。
  用(int型、L = 1であり、L <temp.length; L ++){
    IF(!TEMP [L] =温度[K]){
      TEMP [++ K] = TEMP [L]。
    }
  }

戻り温度[K / 2]。

}

複雑性分析:

  時間の複雑さ:3サイクルの合計でマージソート、プラスワンサイクルアップ重い、それはO(n)をする必要があります

  宇宙複雑:num.length *サイズ2の一時的な配列を作成し、それが(n)は、Oであるべき

概要:
  1.アイデアはシンプルですが、問題がある、Nの最大のテストケース、残業を実行するように見えます

  二値とまだ非常に精通していない、おなじみの分割統治を継続する必要があります。

 

おすすめ

転載: www.cnblogs.com/ysmsxzs/p/11575631.html