中易网

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

答案:6  悬赏:10  
解决时间 2021-01-27 03:54
(JAVA)已知一个数组中的数有序排列,编程实现插入一个数后,依然有序.
最佳答案
有两种方法,代码都给你
第一种,就是常规的想法,:建个数组,然后逐个比较,这应该也是出题人的考察点,但是这种题不适合在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里的方法,实现简单,但是效率不够,而且也违背了出题人的意愿,可做了解
private static Integer[] insert(Integer[] arr, int num) {
List data = new ArrayList();
for (Integer a : arr) {
data.add(a);
}
data.add(num);

Collections.sort(data);
return data.toArray(new Integer[0]);
}
全部回答
最简单的是:直接插入数据然后 sort();
首先重建一个新数组,然后逐个比较复制,下一个比60大就插进去,然后继续就可以了追问麻烦打下代码,时间不多了,我直接复制,谢谢,追答建议你自己写
先建一个大一点的数组,把要插入的元素放到这个数组的最后,然后,写个循环,依次跟这个元素前面的进行比较,如果前面的比这个元素大,就与这个元素交换位置就可以了。
也可以把这个元素放到最前面,然后跟后面的比较,小的就前移。
还可以用java.util.Arrays这个包里有个Arrays.sort()方法,直接进行排序。追问麻烦打下代码,时间不多了,我直接复制,谢谢,
楼主的例子不是insert、而是替换了。
倒着数,直接小于要替换的数,则替换掉
一个有序的数组,再插入另一个数依然有序,这种问题用脑子想想肯定能想出,这种问题我看不值得拿来问
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
A.T安陶减肥产品是什么样
前男友每晚都把我搞到得一塌糊涂,欲仙又欲死
南二环顺峰饮食酒店停车场地址有知道的么?有
根尖诱导成形术的牙根继续发育的类型
求本萝莉小说,首发应该是ai悠悠社区的,名字
万通中介地址在哪,我要去那里办事
炫龙的笔记本怎么样?
为什么有些国货化妆品的气味刺鼻 或者说香到
魅剪风情专业烫染地址在哪,我要去那里办事
恒源汽配地址有知道的么?有点事想过去
暗黑3随从怎么打造戒指
我的世界手机版僵尸猪人在哪容易碰到
七个星期天和天梭哪个好
内部控制评价方法有哪些
美国卡莱叉车轮胎专卖地址在什么地方,想过去
推荐资讯
涂爵士硅藻泥的反映怎么样?
停车场(北红旗路)地址有知道的么?有点事想过
侠岚第六季
中国电信是不是开通了4g套餐才能上4g网
为什么KKTV电视比康佳便宜?
测试古代的你叫什么名字?
三年级学新概念还是洪恩少儿英语
45钢和Q345B钢焊接工艺
为什么有些人会在冬天迅速胖起来,而到夏天又
公司领导经常对我说,你好好干,我和经理不会
户外旅游杂志哪个比较好?
六安海洋世界坐几路公交车
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?