(JAVA)已知一个数组中的数有序排列,编程实现插入一个数后,依然有序.

例如:原数组:11,22,33,44,55,66,77,88,99插入数:60插入后数组:11,22,33,44,55,60,77,88,99... 例如:
原数组: 11,22,33,44,55,66,77,88,99
插入数: 60
插入后数组:11,22,33,44,55,60,77,88,99
展开
 我来答
历盆郁7
推荐于2018-01-14 · TA获得超过4277个赞
知道大有可为答主
回答量:1795
采纳率:100%
帮助的人:946万
展开全部

有两种方法,代码都给你

第一种,就是常规的想法,:建个数组,然后逐个比较,这应该也是出题人的考察点,但是这种题不适合在java理出,一般C语言愿意有这样的问题.

import java.util.Arrays;

public class $ {

    public static void main(String[] args) {

        Integer[] arr = { 11, 22, 33, 44, 55, 66, 77, 88, 99 };
        System.out.println("插入前:" + Arrays.deepToString(arr));

        Integer[] brr = insert(arr, 60);
        System.out.println("插入前:" + Arrays.deepToString(brr));
    }

    private static Integer[] insert(Integer[] arr, int num) {
        Integer[] brr = new Integer[arr.length + 1];
        int idx = 0;
        boolean hasInsert = false;
        for (int i = 0; i < arr.length; i++) {

            if (hasInsert) {
                brr[idx++] = arr[i];
                continue;
            }

            if (arr[i] > num) {
                brr[idx++] = num;
                hasInsert = true;
            }
            brr[idx++] = arr[i];
        }
        return brr;
    }
}


第二种就是利用java api里的方法,实现简单,但是效率不够,而且也违背了出题人的意愿,可做了解

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class $ {

    public static void main(String[] args) {

        Integer[] arr = { 11, 22, 33, 44, 55, 66, 77, 88, 99 };
        System.out.println("插入前:" + Arrays.deepToString(arr));

        Integer[] brr = insert(arr, 60);
        System.out.println("插入前:" + Arrays.deepToString(brr));
    }

    private static Integer[] insert(Integer[] arr, int num) {

        List<Integer> data = new ArrayList<Integer>();

        for (Integer a : arr) {
            data.add(a);
        }

        data.add(num);

        Collections.sort(data);

        return data.toArray(new Integer[0]);
    }
}
匿名用户
2013-01-23
展开全部
楼主的例子不是insert、而是替换了。

倒着数,直接小于要替换的数,则替换掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hdparrot
2013-01-23 · TA获得超过2403个赞
知道小有建树答主
回答量:1385
采纳率:0%
帮助的人:1148万
展开全部
先建一个大一点的数组,把要插入的元素放到这个数组的最后,然后,写个循环,依次跟这个元素前面的进行比较,如果前面的比这个元素大,就与这个元素交换位置就可以了。
也可以把这个元素放到最前面,然后跟后面的比较,小的就前移。
还可以用java.util.Arrays这个包里有个Arrays.sort()方法,直接进行排序。
追问
麻烦打下代码,时间不多了,我直接复制,谢谢,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tvogfj
2013-01-23 · 超过23用户采纳过TA的回答
知道答主
回答量:150
采纳率:0%
帮助的人:75.7万
展开全部
首先重建一个新数组,然后逐个比较复制,下一个比60大就插进去,然后继续就可以了
追问
麻烦打下代码,时间不多了,我直接复制,谢谢,
追答
建议你自己写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhongxia1cao
2013-01-23
知道答主
回答量:8
采纳率:0%
帮助的人:9008
展开全部
一个有序的数组,再插入另一个数依然有序,这种问题用脑子想想肯定能想出,这种问题我看不值得拿来问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式