2013-12-14 75 views
0

我想將數組的所有元素複製到指定位置的另一個元素。將數組的所有元素複製到指定索引處的另一個數組中

如:

Array A contains {'a', 'b', 'c', 'd'} 

Array B contains {'x','y', 'z'} 

Array C should now contain {'a', 'x', 'y', 'z', 'b', 'c', 'd'} when `insert-index` is 1 (insert all B's at first index of A) 

我的首選編程爲Java或在我嘗試的C#

僞代碼:

//複製所有的第一個數組的元素來輸出陣列直到索引 //將「a」複製到輸出陣列

for(int i=0;i<insert-index;i++) 
output[i] = A[i] 

//目標數組的所有元素複製到輸出數組 //拷貝 'X', 'Y', 'Z' 到輸出數組

for(int i=0;i<B.Array.Length;i++) 
output[i] = B[i] 

//將源數組的所有元素複製到輸出數組。 //剩下的 'B', 'C', 'd' 拷貝

for(int i=0;i<A.Array.Length-index;i++) 
output[i]=A[i] 

在算法的最佳拍攝,我可以給是O(n power 3)

任何機構可以告訴我怎麼回事方法或任何指針非常感謝。

(編輯:我知道我可以使用Array.Copymemcpy種內部功能,但是,我只是想學習如何did they do it,也湊合我PRGM的東西。)

+0

@downvoter:你能指出問題嗎?如果它在那裏,我可以糾正它。 –

+0

@RomanVottner:我不想使用內部功能。 (請看問題的最後幾行)我正在努力學習他們是如何做到的?試圖提高編程技能。 –

回答

1

你只需要仔細考慮一下開始和結束指數應該是什麼。
我在下面列出了一些評論。

// this part is straightforward 
for (int i = 0; i < insert-index; i++) 
    output[i] = A[i] 

// we already have insert-index items in output, so continue from there 
for (int i = 0; i < B.length; i++) 
    output[insert-index + i] = B[i] 

// we already have (B.length + insert-index) items in output, 
// and we've already used insert-index items from A, so continue from there 
for (int i = insert-index; i < A.length; i++) 
    output[B.length + i] = A[i] 

由於我們只接觸A和B的每個元素一次,它是O(n)。但它可能會更好地說它是O(m + n),其中mn分別是A和B的長度。

+0

工程很好。謝謝。 –

+0

如果上述算法是O(n次方3),我很擔心。不,只有嵌入了三個「for-loops」,那麼它的一個O(n次方3)。在這裏,如你所說,它的o(n + m)。涼。謝謝。 –

1
public Array getCombination(int index, Array array1, Array array2) 
{ 
    Array returnThis = new Array[array1.length + array2.length]; 
    for (int i = 0; i < index; i++) 
    { 
    returnThis[i] = array1[i]; 
    } 

    for (int i = 0; i < array2.length; i++) 
    { 
    returnThis[i + index] = array2[i];  
    } 

    for (int i = index; i < array1.length; i++) 
    { 
    returnThis[i + array2.length] = array1[i]; 
    } 

    return returnThis; 
} 
相關問題