将元素插入数组中

时间:2012-01-19 03:23:24

标签: c++ arrays

如何制作一个插入方法,以正确的顺序将数字添加到数组中?

void addElement(int table[], int element, int length) {
    int x = 0;
    int temporary=0;
    cout<<length<<endl;

    if(length == 1) {
        table[0] = element;
    }
    else {
        if(length == 2) {
            if (table[0] > element) {
               int temp = table[0];
               table[0] = element;
               table[1] = temp;
            }
            else {
                table[1] = element;
            }
        }
        else {
            for(int i = 0; i< length && x == 0; i++) {
                if(element<table[i] && element>=table[i-1]) {
                    for(int y = i; y<length; y++) {
                        temporary = table[y+2];
                        int temp = table[y];
                        table[y] = element;
                        table[y+1] = table
                     }
                }
            }
        }
    }
}

据我所知。在我的主类中,我已经解决了这个问题,因此数组增加了1.因此,数组末尾有一个开放空间,可以将所有内容推回1。

4 个答案:

答案 0 :(得分:7)

您可以从后向前扫描阵列,向上移动值,直到找到正确的插入点。

void addElement(int *table, int element, int length)
{
    int i = length - 1;
    for (; i > 0 && table[i-1] > element; --i)
    {
        table[i] = table[i-1];
    }
    table[i] = element;
}

答案 1 :(得分:4)

编写一个shiftElements函数,写一个findIndexOfFirstGreaterThan函数,然后在addElement中找到索引,如果是-1则放在最后一个槽中,否则使用索引切换元素,然后一个[index] = elem;

答案 2 :(得分:2)

给自己画一个例子,然后找出做你想做的事情所需的非常简单的步骤列表。

然后编写执行这些步骤的代码。

答案 3 :(得分:1)

我不确定这是否是你想要的,但我认为你想要一些根据其整数值添加元素的东西。此外,我此时无法访问编译器,因此可能存在一些错误。下面的代码只是为了让您简要了解您可以做什么,但可能不是您问题的完美解决方案。

int addElement (int element, int array [], int length)
{   
    vector <int> vectorOfInts; //vector to store current order of ints
    vector <int> vectorOfArrangedInts; //vector to store arranged order

    for (int counter = 0; counter < length; counter ++) //loop to fill the array with values
    {
       vectorOfInts.push_back (array [counter]);
    }

    for (int counter = 0; counter < vectorOfInts.length(); counter ++) //loop through all elements 
    {  
       int temp = 0; //stores temp value of biggest number found at a specific moment
       int elementIndex; //stores indexes
       for (int counterTwo = 0; counterTwo < vectorOfInts.length(); counterTwo ++) //loop through all elements to find the biggest array
       {
          if (vectorOfInts.at (counterTwo) >= temp) //if value is bigger than current biggest number
          {
             temp = vectorOfInts.at (counterTwo); //change temp value
             elementIndex = counterTwo; //remember index
          }
       }
       vectorOfArrangedInts.push_back (vectorOfInts.at(elementIndex)); //add the biggest number to the arranged values
       vectorOfInts.erase (vectorOfInts.begin() + elementIndex); //remove the biggest element
    }
相关问题