Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组更改一半中一半的值等_Java_Arrays_Sorting - Fatal编程技术网

Java数组更改一半中一半的值等

Java数组更改一半中一半的值等,java,arrays,sorting,Java,Arrays,Sorting,所以我有一个方法,它接受数组的大小。我的方法使数组的一半为0 int [] arrary2 = new int[arraySize]; for(int i = 0; i < arraySize/2; i++){ arr2[i] = 0; } //do rest of code? return array2; int[]arrary2=新的int[arraySize]; 对于(int i=0;i

所以我有一个方法,它接受数组的大小。我的方法使数组的一半为0

int [] arrary2 = new int[arraySize];
for(int i = 0; i < arraySize/2; i++){
    arr2[i] = 0;
}
//do rest of code?
return array2;
int[]arrary2=新的int[arraySize];
对于(int i=0;i
如何将数组的后半部分转换为1,依此类推。 例如,大小为14的数组,但数组大小可以是任意大小


[0,0,0,0,0,0,0,0,1,1,1,1,2,2,3]

要执行此操作,请跟踪您希望输入值更改的位置、输入值以及在下次更改之前要执行的插入次数

        int[] arrary2 = new int[arraySize];
        int currentEndPoint = (arraySize / 2) + (arraySize % 2);
        int endPointIncrement = currentEndPoint;
        int currentInputValue = 0;
        for (int i = 0; i < arraySize; i++)
        {
            if (i == currentEndPoint - 1)
            {
                currentInputValue++;
                endPointIncrement = (endPointIncrement / 2) + (endPointIncrement % 2);
                currentEndPoint = currentEndPoint + endPointIncrement;
            }
            arrary2[i] = currentInputValue;
        }
        return arrary2;
int[]arrary2=新的int[arraySize];
int currentEndPoint=(arraySize/2)+(arraySize%2);
int endPointIncrement=currentEndPoint;
int currentInputValue=0;
for(int i=0;i

希望这有助于

做到这一点,跟踪您希望输入值更改的位置、输入值以及在下一次更改之前要执行的插入次数

        int[] arrary2 = new int[arraySize];
        int currentEndPoint = (arraySize / 2) + (arraySize % 2);
        int endPointIncrement = currentEndPoint;
        int currentInputValue = 0;
        for (int i = 0; i < arraySize; i++)
        {
            if (i == currentEndPoint - 1)
            {
                currentInputValue++;
                endPointIncrement = (endPointIncrement / 2) + (endPointIncrement % 2);
                currentEndPoint = currentEndPoint + endPointIncrement;
            }
            arrary2[i] = currentInputValue;
        }
        return arrary2;
int[]arrary2=新的int[arraySize];
int currentEndPoint=(arraySize/2)+(arraySize%2);
int endPointIncrement=currentEndPoint;
int currentInputValue=0;
for(int i=0;i
希望这有助于

粗略算法:

  • 计算剩余工作的一半(注意奇数/偶数)
  • 用当前值填充该值
  • 重复
示例代码:

public static int[] createArray(int size)
{
    int[] array = new int[size];
    int half = (size / 2) + (size % 2);
    int index = half;
    int value = 0;
    for (int i = 0; i < size; i++) {
        if (i == index) {
            half = (half / 2) + (half % 2);
            index += half;
            value++;
        }
        array[i] = value;
    }
    return array;
}
粗略算法:

  • 计算剩余工作的一半(注意奇数/偶数)
  • 用当前值填充该值
  • 重复
示例代码:

public static int[] createArray(int size)
{
    int[] array = new int[size];
    int half = (size / 2) + (size % 2);
    int index = half;
    int value = 0;
    for (int i = 0; i < size; i++) {
        if (i == index) {
            half = (half / 2) + (half % 2);
            index += half;
            value++;
        }
        array[i] = value;
    }
    return array;
}
这里有一个方法:

import java.util.Arrays;

public class Main {

    static int[] createArray(int size) {
        int[] result = new int[size];

        int limit = (size + 1) / 2;

        int start = 0, value = 0, idx = 0;

        do {
            for (int i = start; i < start + limit && idx < size; ++i)
                result[idx++] = value;

            start += limit;
            limit = (limit + 1) / 2;
            ++value;
        } while (idx < size);

        return result;
    }

    public static void main(String[] args) {
        int[] result = createArray(70);
        System.out.println(Arrays.toString(result));
    }
}
这里有一个方法:

import java.util.Arrays;

public class Main {

    static int[] createArray(int size) {
        int[] result = new int[size];

        int limit = (size + 1) / 2;

        int start = 0, value = 0, idx = 0;

        do {
            for (int i = start; i < start + limit && idx < size; ++i)
                result[idx++] = value;

            start += limit;
            limit = (limit + 1) / 2;
            ++value;
        } while (idx < size);

        return result;
    }

    public static void main(String[] args) {
        int[] result = createArray(70);
        System.out.println(Arrays.toString(result));
    }
}