You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对长度为3、末位为中间值的Integer数组排序及插入元素?

实现满足特定顺序的3元素数组插入逻辑

核心思路

咱们的目标是把长度为3的Integer数组最终调整成最小元素在第一位,最大元素在第二位,中间值在第三位的状态(也就是array[0] < array[2] < array[1])。插入过程分两个阶段处理就很清晰:

  • 第一阶段:数组只有1个初始元素时,插入第二个值直接放到第二位就行,暂时不用排序;
  • 第二阶段:插入第三个值时,把三个元素整体排序,再按要求重新分配位置。

代码实现(Java)

import java.util.Arrays;

public class CustomArrayInsert {
    public static void insertValue(Integer[] array, Integer newValue) {
        // 用while循环找到第一个空的位置
        int insertIndex = 0;
        while (insertIndex < array.length && array[insertIndex] != null) {
            insertIndex++;
        }

        // 把新值插入到空位置
        array[insertIndex] = newValue;

        // 当插入到第三个元素时,开始调整顺序
        if (insertIndex == 2) {
            // 取出三个元素准备排序
            Integer[] temp = new Integer[]{array[0], array[1], array[2]};
            // 这里用简单的冒泡排序,也可以直接用Arrays.sort(temp)简化
            for (int i = 0; i < temp.length - 1; i++) {
                for (int j = 0; j < temp.length - 1 - i; j++) {
                    if (temp[j] > temp[j + 1]) {
                        Integer swap = temp[j];
                        temp[j] = temp[j + 1];
                        temp[j + 1] = swap;
                    }
                }
            }
            // 按要求重新赋值:最小放[0],最大放[1],中间值放[2]
            array[0] = temp[0];
            array[1] = temp[2];
            array[2] = temp[1];
        }
    }

    public static void main(String[] args) {
        // 测试示例1:初始值1,插入3,再插入2
        Integer[] array1 = new Integer[3];
        array1[0] = 1;
        insertValue(array1, 3);
        System.out.println("插入3后:" + Arrays.toString(array1)); // 输出 [1, 3, null]
        insertValue(array1, 2);
        System.out.println("最终结果:" + Arrays.toString(array1)); // 输出 [1, 3, 2]

        // 测试示例2:初始值5,插入8,再插入10
        Integer[] array2 = new Integer[3];
        array2[0] = 5;
        insertValue(array2, 8);
        System.out.println("插入8后:" + Arrays.toString(array2)); // 输出 [5, 8, null]
        insertValue(array2, 10);
        System.out.println("最终结果:" + Arrays.toString(array2)); // 输出 [5, 10, 8]
    }
}

代码细节说明

  1. 定位插入位置:通过while循环遍历数组,找到第一个null的位置,确保新值能正确插入到数组的下一个空位;
  2. 触发顺序调整:只有当插入到第三个位置(索引为2)时,才会启动排序和位置调整,因为这时候数组已经填满,需要满足最终的顺序要求;
  3. 排序与重分配:把三个元素排序后,直接按「最小→第一位,最大→第二位,中间→第三位」的规则重新赋值,刚好契合array[0] < array[2] < array[1]的要求。

内容的提问来源于stack exchange,提问作者Michael Garcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:47:47