2011-04-14 33 views
1

HI大家C++從一個陣列添加到另一個,期待通過另一個陣列每次我一個元素添加到它

我想在一個時間從另一個陣列添加元素一個給臨時數組我表現的。每次我向臨時數組添加一個元素時,我都想查看我已經添加到它的內容。

我這樣做是爲了排序的目的,我對此很新。

我知道我必須用一個for循環

int numbers[6]; //main array 
int tempArr[6]; //temporary array I would like to add elements to 

for(int i = 0; i < 6; i++) 
{ 
//if temp element just added is >, < or = any element in temp array 
//do stuff 
} 

數字數組中的元素通過這一點,他們已經在數字數組中來自文件左右。我只需要一次將每個值傳遞給臨時數組,以便我可以查看臨時數組中的更低,更高或相等的值

希望你能幫忙,我到處看看,沒有什麼東西看起來與我需要的一致:(

+0

你究竟碰到了什麼?將數組中的一個元素複製到另一個元素還是對數組元素進行排序?如果是家庭作業,添加作業標籤刪除元素標籤。 – Mahesh 2011-04-14 15:01:29

+0

它的作業類型但不是 – Tanya 2011-04-14 15:05:13

+0

即時獲取元素到另一個數組,每次添加一個元素時,它看起來通過所有元素都添加到的數組。對不起,我不是世界上最清晰的人 – Tanya 2011-04-14 15:06:22

回答

0

我想你需要std::set

std::set<int> temp; 
for (int i(0); i < (sizeof(numbers)/sizeof(numbers[0])); ++i) 
{ 
    temp.insert(numbers[i]); 
} 

set將排序和消除重複有效

+0

謝謝,但顯然設置不是在標準和臨時必須有一個類的類型,這是什麼意思? – Tanya 2011-04-14 15:04:29

+0

@Tanya:'set'當然*是*的標準。 '#include '得到它 – 2011-04-14 15:09:34

+0

對不起,得到它 我解決了爲什麼即時通訊獲取其他錯誤消息,但我不知道如何改變它 – Tanya 2011-04-14 15:14:05

0

有是你錯過了兩件事情:

  • 一種方法來知道數組中有多少元素。 (C++數組是固定大小的(在你的情況下都是6),但是大概tempArr開始是空的。)
  • 一種將元素插入到數組中的方法(您將對tempArr執行這種操作)。

//if temp element just added is >, < or = any element in temp array 

任何元素都可以是>,<或=任何其他元素,總是。 (好吧,除非有一些時髦的操作符過載。)

詳細說明您的僞代碼。也許可以添加一個或兩個函數調用。

+0

tempArr開始是空的是的 也im錯過了如何插入一個元素到tempArr 我按下for循環插入tempArr和裏面,有tempArr [i] = numbers [i]; – Tanya 2011-04-14 15:30:48

+0

正如我所說,雖然我真的很新,所以我真的不知道我在做什麼 – Tanya 2011-04-14 15:31:34

1

在我看來,你應該真的考慮Insertion Sort算法。每次需要添加新值時,只需將其放入當前臨時數組的末尾,然後將數值向下推至數組中,直到找到它的位置並知道該項目的當前索引,您將能夠找到所有元素<或>比這一個。

該算法在平均情況下具有O(n^2)複雜度。你可以用二叉樹實現O(n log n)。

0

你可以用另一個循環很容易地做到這一點。如果你確信你將永遠有6項文件(這是您目前有基於上面的數組的大小),那麼你可以做這樣的事情:

for (i = 0; i < 6; i++) 
{ 
    numbers[i] = temp[i]; 

    for (j = 0; j < count; j++) 
    { 
     if (temp[i] > temp[j]) 
     // Do something 
     if (temp[i] < temp[j]) 
     // Do something else 
     if (temp[i] == temp[j]) 
     // Do something else 
    } 
    count++; 
} 

其他東西將需要如果輸入元素的數量是可變的,則調整它,否則這將逐個將「數字」中的每個元素移動到「temp」數組中,並且在每次移動時,它都會查看整個其他項目列表並檢查如果新值小於,大於或等於剛添加的值。

編輯:如果您嘗試對tempArray中的項進行排序,則查找其他人建議的插入排序。如果您只是想按照升序(或降序)順序獲取numberArray中的元素,則可以查看氣泡排序,這對於新程序員來說可能更容易處理,因爲它不需要第二個數組。

相關問題