编程语言
首页 > 编程语言> > java-按顺序插入数组

java-按顺序插入数组

作者:互联网

简单来说,我正在处理的项目的一部分是让我按顺序降序排列一个数组并添加一个元素,以使该数组保持按序排列.最初,我认为将元素添加到数组中,然后在实现Comparable之后进行排序会很简单,但是后来发现禁止使用任何类型的排序算法.以及收藏.有点关于如何从这里进行的想法,有什么提示吗?

例如:

int[] x = [ 7, 6, 6, 5, 3, 2, 1 ] 

add 4

[ 7, 6, 6, 5, 4, 3, 2, 1 ]

澄清地说我并不是完全没有想法,只是有效率的想法.到目前为止,我能得出的结论是:

int[] bigger = new int[x.length];
int add = 4;
for (int i = 0; i < bigger.length; i++){
     if ( add > x[i] && add < x[i+1]){
         bigger[i] = x[i];
         bigger[i+1] = add;
     else{
         bigger[i] = x[i];
     }
}

我知道它将为x引发IndexOutOfBounds错误,但是我觉得必须有一个比这更简单的方法,对吗?

解决方法:

实际上,只有一个for循环可以实现您的功能.

    int[] x = {7, 6, 6, 5, 3, 2, 1 };
    //Declare an int array with length = x.length+1;
    int[] bigger = new int[x.length+1];
    int add = 4;
    /** Define a variable to indicate that if a property location is found.*/
    boolean found = false;
    /** Define a variable to store an index for insert*/
    int indexToInsert = 0;
    for (int i = 0; i < x.length; i++){
         if ( !found && add >= x[i]){
             found = true;
             indexToInsert = i;
             bigger[indexToInsert] = add;
             i--;
         }
         else{
             if(found)
             {
                 bigger[i+1] = x[i]; 
             }else
             {
                 bigger[i] = x[i];
             }

         }
    }

    /*
     * If a property index is not found. Then put the value at last. 
     */
    if(!found)
    {
        indexToInsert = x.length;//
        bigger[indexToInsert] = add;
    }

一些示例如下运行:

初始数组为[7、6、6、5、3、2、1]

加= 4

 [7, 6, 6, 5, 4, 3, 2, 1]

加= -1

 [7, 6, 6, 5, 3, 2, 1, -1]

加= 100

 [100, 7, 6, 6, 5, 3, 2, 1]

标签:insertion,arrays,java
来源: https://codeday.me/bug/20191030/1965500.html