C ++从一个数组添加到另一个数组,每次向其添加元素时都要查看另一个数组

时间:2011-04-14 14:56:52

标签: c++ arrays loops sorting

大家好

我想从另一个数组一次添加一个元素到一个临时数组。每次我向临时数组添加一个元素时,我想查看我已添加到它的内容。

我这样做是为了分类,我对此很新。

我知道我必须使用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
}

数字数组中的元素来自一个文件,所以到目前为止它们已经在数字数组中了。我只需要将每个值一次传递给临时数组,这样我就可以在临时数组中查找更低,更高或相等的值

希望你能提供帮助,我到处寻找,似乎没有任何东西符合我的需要:(

4 个答案:

答案 0 :(得分:1)

在我看来,你应该考虑Insertion Sort算法。每次你需要添加一个新值时,只需将它放到最后的当前临时数组中,然后将值向下推到数组中,直到找到它为止,并且知道该项目的当前索引,就可以找到所有元素&LT;或者&gt;比这个。

该算法在平均情况下具有O(n ^ 2)复杂度。您可以使用二叉树实现O(n log n)。

答案 1 :(得分:0)

我认为你需要一个std::set

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

set将有效地排序和消除重复

答案 2 :(得分:0)

你遗失了两件事:

  • 了解数组中有多少元素的方法。 (C ++数组是固定大小的(在你的情况下为6),但可能tempArr开始是空的。)
  • 将元素插入数组的方法(您将对tempArr执行此操作)。

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

任何元素都是&gt;,&lt;或者总是对任何其他元素。 (好吧,除非有一些时髦的运算符重载。)

详细说明你的伪代码。也许可以添加一两个函数调用。

答案 3 :(得分: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中的元素,您可以查看冒泡排序,这可能更容易让新程序员处理,因为它不需要第二个数组。