Java 如何将随机数插入数组并进行排序
我的代码应该取随机方法生成的随机数并对它们进行排序,但它只给我一个数字 我的程序是一个随机数生成器,应该生成1000个我可以排序的数字,但我的代码只在数组中插入一个数字Java 如何将随机数插入数组并进行排序,java,arrays,sorting,random,Java,Arrays,Sorting,Random,我的代码应该取随机方法生成的随机数并对它们进行排序,但它只给我一个数字 我的程序是一个随机数生成器,应该生成1000个我可以排序的数字,但我的代码只在数组中插入一个数字 public static void main(String[] args) { // write int max = 1000; int min=0; int range = max - min + 1; // generate random numbers within 1 to
public static void main(String[] args) {
// write
int max = 1000;
int min=0;
int range = max - min + 1;
// generate random numbers within 1 to 10
for (int i = 0; i < 1000; i++) {
int rand = (int) (Math.random () * range) + min;
System.out.println ( rand );
int array[] = {rand};
int size = array.length;
for ( i = 0; i < size - 1; i++) {
int min1 = i;
for (int j = i + 1; j < size; j++) {
if (array[j] < array[min1]) {
min = j;
}
}
int temp = array[min1];
array[min1] = array[i];
array[i] = temp;
}
for (int k = 0; k < size; i++) {
System.out.print(" " + array[i]);
}
}
}
publicstaticvoidmain(字符串[]args){
//写
int max=1000;
int min=0;
整数范围=最大-最小+1;
//生成1到10之间的随机数
对于(int i=0;i<1000;i++){
int rand=(int)(Math.random()*range)+min;
System.out.println(兰德);
int数组[]={rand};
int size=array.length;
对于(i=0;i
您的代码将导致ArrayIndexOutException。下面是您的代码更改,我不会更改太多,这样您可以比较它们并找出错误,祝您好运:D
public static void main(String[] args) {
int max = 1000;
int min=0;
int range = max - min + 1;
int[] array = new int[range];
// generate random numbers within 1 to 10
for (int i = 0; i < 1000; i++) {
int rand = (int) (Math.random () * range) + min;
array[i] = rand;
}
int size = array.length;
for (int i = 0; i < size; i++) {
int min1 = i;
for (int j = i + 1; j < size; j++) {
if (array[j] < array[min1]) {
min1 = j;//here min1
}
}
int temp = array[min1];
array[min1] = array[i];
array[i] = temp;
}
for (int k = 0; k < size; k++) {
System.out.print(" " + array[k]);
}
}
publicstaticvoidmain(字符串[]args){
int max=1000;
int min=0;
整数范围=最大-最小+1;
int[]数组=新的int[范围];
//生成1到10之间的随机数
对于(int i=0;i<1000;i++){
int rand=(int)(Math.random()*range)+min;
数组[i]=rand;
}
int size=array.length;
对于(int i=0;i
让我更清楚地解释一下,OP的代码中有一些问题,两个主要问题:
一:
for(i=0;i
将永远不会运行,因为数组大小为1,所以for循环短语将在不运行的情况下被忽略(mean for(int i=0;i<0;i++){…})
二:
for(int k=0;k
因为数组大小为1,所以当数组[1]抛出索引时,将抛出异常。所以最外层的循环只运行一次,然后抛出异常
:D您需要将程序分为不同的步骤:
max
和min
的值应分别为10和1数组
应该在开始插入值之前声明。它的固定大小也应该是1000
更改为int-array[]={rand}你觉得怎么样代码>是什么意思?你对数字排序是什么意思?你只得到1个输出,因为数组[j]){ 温度=阵列[j-1]; 数组[j-1]=数组[j]; 数组[j]=温度; } } } System.out.println(array.toString(array)); }
array
只有一个元素。我的随机数生成器只传递一个数字,当它要传递1000个数字时。对于1000个循环的每一次迭代,你都在做int-array[]={rand}代码>-这是在创建一个新数组,其中包含一个元素。如何对其进行编码以使其包含1000个元素?您可能需要查看代码。您的假设并不反映OP的代码所建议的OP要求。例如,为什么数组范围元素?为什么OP要迭代1000次?
for ( i = 0; i < size - 1; i++) {
int min1 = i;
for (int j = i + 1; j < size; j++) {
if (array[j] < array[min1]) {
min = j;
}
}
int temp = array[min1];
array[min1] = array[i];
array[i] = temp;
}
for (int k = 0; k < size; i++) {
System.out.print(" " + array[i]);
}
public static void main(String[] args) {
int max = 10;
int min = 1;
int range = max - min + 1;
int size = 1000;
int[] array = new int[size];
for (int i = 0; i < size; i++) {
int rand = (int) (Math.random() * range + min);
array[i] = rand;
}
int temp = 0;
for (int i = 0; i < size; i++) {
for (int j = 1; j < size - i; j++) {
if (array[j - 1] > array[j]) {
temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}