如何制作一个插入方法,以正确的顺序将数字添加到数组中?
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。
答案 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
}