(JAVA)已知一个数组中的数有序排列,编程实现插入一个数后,依然有序.
答案:6 悬赏:10
解决时间 2021-01-27 03:54
- 提问者网友:蔚蓝的太阳
- 2021-01-26 23:55
(JAVA)已知一个数组中的数有序排列,编程实现插入一个数后,依然有序.
最佳答案
- 二级知识专家网友:轻雾山林
- 2021-01-27 00:30
有两种方法,代码都给你
第一种,就是常规的想法,:建个数组,然后逐个比较,这应该也是出题人的考察点,但是这种题不适合在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]);
}
第一种,就是常规的想法,:建个数组,然后逐个比较,这应该也是出题人的考察点,但是这种题不适合在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
for (Integer a : arr) {
data.add(a);
}
data.add(num);
Collections.sort(data);
return data.toArray(new Integer[0]);
}
全部回答
- 1楼网友:西风乍起
- 2021-01-27 05:37
最简单的是:直接插入数据然后 sort();
- 2楼网友:山河有幸埋战骨
- 2021-01-27 04:55
首先重建一个新数组,然后逐个比较复制,下一个比60大就插进去,然后继续就可以了追问麻烦打下代码,时间不多了,我直接复制,谢谢,追答建议你自己写
- 3楼网友:末日狂欢
- 2021-01-27 03:33
先建一个大一点的数组,把要插入的元素放到这个数组的最后,然后,写个循环,依次跟这个元素前面的进行比较,如果前面的比这个元素大,就与这个元素交换位置就可以了。
也可以把这个元素放到最前面,然后跟后面的比较,小的就前移。
还可以用java.util.Arrays这个包里有个Arrays.sort()方法,直接进行排序。追问麻烦打下代码,时间不多了,我直接复制,谢谢,
也可以把这个元素放到最前面,然后跟后面的比较,小的就前移。
还可以用java.util.Arrays这个包里有个Arrays.sort()方法,直接进行排序。追问麻烦打下代码,时间不多了,我直接复制,谢谢,
- 4楼网友:往事隔山水
- 2021-01-27 02:02
楼主的例子不是insert、而是替换了。
倒着数,直接小于要替换的数,则替换掉
倒着数,直接小于要替换的数,则替换掉
- 5楼网友:迷人又混蛋
- 2021-01-27 01:15
一个有序的数组,再插入另一个数依然有序,这种问题用脑子想想肯定能想出,这种问题我看不值得拿来问
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯