将元素插入数组中

Inserting an element into an array

本文关键字:数组 插入 元素      更新时间:2023-10-16

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

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。

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

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;
}

写一个shiftElements函数,写一个findIndexOfFirstGreaterThan函数,然后在addElement-中找到索引,如果-1则放在最后一个slot中,否则用index移位元素,则a[index]=elem;

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

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

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

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
    }