Есть массив из 4 элементов.Делаю пузырькову сортировку но последний шаг он не делает. Вот код
public class JavaApplication3 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int []a = new int[10];
a[0]=18;
a[1]=7;
a[2]=62;
a[3]=1;
SOrting sOrting = new SOrting();
for (int i = 0;i<4;i++){
System.out.print("Before srotnig " + a[i] + " ");
}
sOrting.bubbleSort(a);
for (int i = 0;i<4;i++){
System.out.print(" After srotnig " + a[i] + " ");
}
}
//--------------------------------------------------------------
}
Вот класс сортировки
public class SOrting {
public void bubbleSort(int a[]) {
int out, in;
int nElems=4;
for (out = nElems - 1; out > 1; out--) // Внешний цикл (обратный)
{
for (in = 0; in < out; in++) // Внутренний цикл (прямой)
{
if (a[in] > a[in + 1]) // Порядок нарушен?
{
swap(in, in + 1,a); // Поменять местами
}
}
}
}
//--------------------------------------------------------------
private void swap(int one, int two,int a[]) {
long temp = a[one];
a[one] = a[two];
a[two] = (int) temp;
}
}
Вот что получаю на выходе ДО сортировки
18 7 62 1
после сортировки
7 1 18 62
почему 7 и 1 не меняются местами???я сделал все поформуле книжки . если сделать out>0 тогда будет 1 7 Но это неправильно у меня 4 элемента.ПОчему так ?
Дело в том, что ваш внешний цикл заканчивается раньше, чем отсортирует элементы "1" и "7". Измените условие внешнего цикла в вашем классе сортировки на следующее : (out = nElems - 1; out > 0; out--)
public class SOrting {
public void bubbleSort(int a[]) {
int out, in;
int nElems=4;
for (out = nElems - 1; out > 0; out--) // Внешний цикл (обратный)
{
for (in = 0; in < out; in++) // Внутренний цикл (прямой)
{
if (a[in] > a[in + 1]) // Порядок нарушен?
{
swap(in, in + 1,a); // Поменять местами
}
}
}
}
//--------------------------------------------------------------
private void swap(int one, int two,int a[]) {
long temp = a[one];
a[one] = a[two];
a[two] = (int) temp;
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости