Есть массив из 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;
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возник вопрос: Как удалить одинаковые буквы из строки? Есть вот это:
Навеяно статьёй о различиях DTO, POCO и Value Object на Хабрахабре: DTO vs POCO vs Value Object, а также вопросом POCO vs DTO
Например, чтобы обработать нажатие на Button необходимо воспользоваться методом setOnClickListener передав оному OnClickListener (слушатель)И такой Listener много...