ваш код приведет к 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]);
}
}
позвольте мне объяснить это более четко, в коде ОП естьнекоторые вопросы, два направления: один:
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;
}
никогда не будет запущен, поскольку размер массива равен 1, поэтому фраза цикла for будет игнорироваться без выполнения (среднее значение для (int i = 0; i <0); i ++) {....}). </p>
two:
for (int k = 0; k < size; i++) {
System.out.print(" " + array[i]);
}
, поскольку размер массива равен 1, поэтому, когда массив [1] выбрасывает индекс исключение. цикл просто запустится один раз, а затем выдаст исключение.
: D