bazeyvit
@bazeyvit

Ошибка в коде пузырьковой сортировки?

Я — новичок в Java. Пробую делать сортировку пузырьком, написал такой код:

import java.util.Random;
import java.util.Scanner;

public class Main {

	
	public static void main(String[] args) {
		
		double[] test = new double[5];
		double t;
		
		//Присвоение каждому элементу случайного значения
		for(int i = 0;i<test.length;i++){
			test[i] = Math.round((100*Math.random()));
			System.out.println(test[i]);
		}
		
		//Сортировка пузырьком
		for(int i = 0;i<test.length;i++){	
			
			for(int k = 0;k<test.length-1;k++){
				
				int x = i+1;				
				if(test[i]>test[x]){
					t = test[i];
					test[i] = test[x];
					test[x] = t;		
					
				}				
			}			
		}					
	}
}



А мне вылазит ошибка:
Exception in thread &quot;main&quot; java.lang.ArrayIndexOutOfBoundsException: 5<br/>
at Main.main(Main.java:24)



Что я не так делаю?
  • Вопрос задан
  • 3806 просмотров
Решения вопроса 1
@da0c
Смотрим:
for(int i = 0;i<test.length;i++){
for(int k = 0;k<test.length-1;k++){
int x = i+1;
if(test[i]>test[x]){
.....
}
}
}

на последней итерации внешнего цикла test[x] будет выходить за границы массива.
Т.к. i — это индекс последнего элемента test, а x = i+1 — индекс следующего за последним…
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
bazeyvit
@bazeyvit Автор вопроса
Уже нашел ошибки:

  1. Во
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы