2016-11-29 5 views
0

私はMergeSortをコーディングしようとしました。しかし、私のコードはMergeSortの有名な実装とは大きく異なっています。だから私は私の実装が正しい場合、知りたいです。私のアルゴリズムは、2つのint配列(それぞれがソートされている)を取り、それらをソートされた大きな配列に置きます。そして私のアルゴリズムの漸近的な複雑さは何ですか?どうもありがとうございました!!このMergeSortはありますか?

public static int[] myMergeSort(int[] array, int[] array2) { 
    int[] giveback = new int[array.length + array2.length]; 
    int i = 0; 
    int j = 0; 

    for (int x = 0; x < giveback.length; x++) { 
     if (array[i] >= array2[j]){ 
      giveback[x] = array2[j]; 
      j++; 
     } else { 
      giveback[x] = array[i]; 
      i++; 
     } 

     if (i == array.length) { 
      x++; 
      for (int c = j; c < array2.length; c++) { 
       giveback[x] = array2[c]; 
       x++;  
      } 
      return giveback; 
     } 

     if (j == array2.length) { 
      x++; 
      for (int b = i; b < array.length; b++){ 
       giveback[x] = array[b]; 
       x++; 
      } 
      return giveback; 
     } 
    } 

    return giveback; 
} 
+0

Mergesortは一般に、1つのソートされていない配列を入力として扱うことが分かっているため、解決している問題はかなり単純です。 –

+2

私はマージを見る。私はその並べ替えを見ません。 –

+0

これはmergソートの一部です –

答えて

2

あなたが持っているものは、すでにソートされた2つの配列をマージするマージ(マージソートではありません)です。時間の複雑さはO(n)です.nはarrayの要素数+ array2の要素数の和です。