将某个数字移动到数组的前面(Java)
我需要一个代码的帮助,在这个代码中,我必须使用一个随机数字数组将数字“7”放在数组的前面。我使用Math.random生成每个索引中的随机数。在这些索引中的任何一个中,都可以生成数字7将某个数字移动到数组的前面(Java),java,arrays,Java,Arrays,我需要一个代码的帮助,在这个代码中,我必须使用一个随机数字数组将数字“7”放在数组的前面。我使用Math.random生成每个索引中的随机数。在这些索引中的任何一个中,都可以生成数字7 import java.util.Arrays; public class NumberShifter { public static int[] Array(){ int[] array = new int[20]; int max = 10; in
import java.util.Arrays;
public class NumberShifter {
public static int[] Array(){
int[] array = new int[20];
int max = 10;
int min = 1;
int rand = 0;
int range = max - min +1;
for(int t = 0;t<=array.length-1;t++) {
rand = (int)(Math.random() * range) + min;
array[t] = rand;
}
return array;
}
}
导入java.util.array;
公共类数字换档器{
公共静态int[]数组(){
int[]数组=新的int[20];
int max=10;
int min=1;
int rand=0;
整数范围=最大-最小+1;
对于(int t=0;t迭代数组中的元素,如果它们是7
则在数组的开头将它们与下一个元素交换,使用另一个变量跟踪下一个索引进行交换
int index = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] == 7) {
int tmp = array[i]; // actually not needed, we know it's 7
array[i] = array[index];
array[index] = tmp; // or just 7
index++;
}
}
int索引=0;
for(int i=0;i
实际上,我会从末尾开始,把前面的座位留给七人
公共静态int[]数组(){
int[]数组=新的int[20];
int max=10;
int min=1;
int rand=0;
整数范围=最大-最小+1;
int sevensGoHere=0;
for(int t=array.length-1;t>=sevensGoHere;){
rand=(int)(Math.random()*范围)+min;
如果(兰德==7){
数组[sevensGoHere++]=rand;
}
否则{
数组[t--]=rand;
}
}
返回数组;
}
通过动态操作,您不需要重新排列数组。如果math.rand不生成7,会发生什么?@C2H50H最终会生成。@NiVeR这不是重点。该代码可以很好地生成没有出现7的序列,因此C2H50H的问题是合法的。您可以在数组中运行并标记所有7所在的位置ed然后将7交换到数组的前面。查看@FedericoklezCulloca确实,我是在讽刺:)如果第一个元素是7,实际上有不必要的复制操作。如果array[index],交换操作是否是一个好主意!=7
但还是要增加索引吗?@Steyrix当然可以。不过,我不想让它变得过于复杂。而且对运行时间的影响也很小。这是我尝试过的方法!我就是想不出来。谢谢。