Java 在随机数组中插入数字
我需要一些帮助,将数字8插入到一个数组中,该数组给我随机值。数组必须是有序的。例如,如果我有一个数组(1,5,10,15),我必须在5和10之间插入数字8。我有一个问题,我如何才能找到一个方法来找到索引,在那里8将被放置,因为数组是随机的,它可以是任何东西。以下是我目前的代码:Java 在随机数组中插入数字,java,arrays,Java,Arrays,我需要一些帮助,将数字8插入到一个数组中,该数组给我随机值。数组必须是有序的。例如,如果我有一个数组(1,5,10,15),我必须在5和10之间插入数字8。我有一个问题,我如何才能找到一个方法来找到索引,在那里8将被放置,因为数组是随机的,它可以是任何东西。以下是我目前的代码: public class TrickyInsert { public static void main(String[] args) { int[] mysteryArr = generateRandArr(
public class TrickyInsert {
public static void main(String[] args) {
int[] mysteryArr = generateRandArr();
//print out starting state of mysteryArr:
System.out.print("start:\t");
for ( int a : mysteryArr ) {
System.out.print( a + ", ");
}
System.out.println();
//code starts below
// insert value '8' in the appropriate place in mysteryArr[]
int[] tmp = new int[mysteryArr.length + 1];
int b = mysteryArr.length;
for(int i = 0; i < mysteryArr.length; i++) {
tmp[i] = mysteryArr[i];
}
tmp[b] = 8;
for(int i =b ; i<mysteryArr.length; i++) {
tmp[i+1] = mysteryArr[i];
}
mysteryArr = tmp;
public类trickyinstert{
公共静态void main(字符串[]args){
int[]mysteryArr=generateRandArr();
//打印mysteryArr的开始状态:
系统输出打印(“开始:\t”);
对于(int a:mysteryArr){
系统输出打印(a+“,”);
}
System.out.println();
//代码从下面开始
//在mysteryArr[]中的适当位置插入值“8”
int[]tmp=newint[mysteryArr.length+1];
int b=mysteryArr.length;
for(int i=0;i 对于(int i=b;i在您的示例中,随机数组被排序。如果是这种情况,只需插入8并再次排序。在您的示例中,随机数组被排序。如果是这种情况,只需插入8并再次排序。只需添加数字,然后使用数组。sort
方法
int b = mysteryArr.length;
int[] tmp = new int[b + 1];
for(int i = 0; i < b; i++) {
tmp[i] = mysteryArr[i];
}
tmp[b] = 8;
mysteryArr = Arrays.sort(tmp);
intb=mysteryArr.length;
int[]tmp=新的int[b+1];
对于(int i=0;i
只需添加数字,然后使用数组。排序
方法
int b = mysteryArr.length;
int[] tmp = new int[b + 1];
for(int i = 0; i < b; i++) {
tmp[i] = mysteryArr[i];
}
tmp[b] = 8;
mysteryArr = Arrays.sort(tmp);
intb=mysteryArr.length;
int[]tmp=新的int[b+1];
对于(int i=0;i
我建议使用二进制搜索找到合适的索引。找到索引后,可以使用
System.arraycopy(Object src, int srcIndex, Obj dest, int destIndex, int length)
将左半部复制到新数组中(长度比现有数组长一倍),然后复制新元素,最后复制右半部。这样就不必在每次插入元素时对整个数组进行排序
另外,下面的部分没有任何作用
for(int i =b ; i<mysteryArr.length; i++) {
tmp[i+1] = mysteryArr[i];
}
for(inti=b;i我建议使用二进制搜索来找到合适的索引。找到索引后,可以使用
System.arraycopy(Object src, int srcIndex, Obj dest, int destIndex, int length)
将左半部复制到新数组中(长度比现有数组长一倍),然后复制新元素,最后复制右半部。这样就不必在每次插入元素时对整个数组进行排序
另外,下面的部分没有任何作用
for(int i =b ; i<mysteryArr.length; i++) {
tmp[i+1] = mysteryArr[i];
}
for(inti=b;iintfindposition(inta,int[]inputArr)
{
对于(int i=0;i
int findPosition(int a,int[]inputArr)
{
对于(int i=0;i
只需复制数组,添加8,然后再次排序
int[] a = generateRandArr();
int[] b = Arrays.copyOf(a, a.length + 1);
b[a.length] = 8;
Arrays.sort(b);
只需复制数组,添加8,然后再次排序
int[] a = generateRandArr();
int[] b = Arrays.copyOf(a, a.length + 1);
b[a.length] = 8;
Arrays.sort(b);
是的,数组是随机的,但有顺序的数字。我的工作是编写代码,找出8可以放在哪里,从而使数组按顺序排列。我上面的代码是错误的。我只是想让你们知道我首先得到的是什么:/我相信这与int b有关,这是我一直坚持的部分。你需要对数组进行排序吗t 8会去哪里?是的,数组是随机的,但是有顺序的数字。我的工作是编写代码,找出8可以放在哪里,以使数组有序。我上面的代码是错误的。只是想让你们知道我首先得到了什么:/我相信它与int b有关,这是我真正需要排序的部分数组或计算出8的位置?