====== BubbleSort - Bublinkové řazení ======
===== Princip =====
Algoritmus opakovaně prochází seznam(pole) a porovnává každé dva sousedící prvky. Pokud nejsou ve správném pořadí, prohodí je. Porovnávání prvků se opakuje dokud není seznam(pole) seřazený(é).
===== Složitost =====
Asymptotická složitost bublinkového řazení je O(n²).
===== Řešení =====
==== Varianta 1 ====
V poli se posunuje největší prvek na jeho konec, při opakování zkracujeme průchod polem odzadu. Pracujeme s prvkem na pozici i a i+1.
static void BubbleSort1 (int[] npole)
{
int i; //pocet opakovani probublavani
int j; //index v poli
int pom; //pomocna promenna pro vymenu
for(i=npole.length-1;i>0;i--) //vnejsi smycka
{
for(j=0;jnpole[j+1]) // prohodime prvky?
{
pom = npole[j];
npole[j]=npole[j+1];
npole[j+1]=pom;
}
}
}
}
==== Varianta 2 ====
V poli se posunuje nejmenší prvek na jeho začátek, při opakování zkracujeme průchod polem odpředu. Pracujeme s prvkem na pozici i a i+1.
static void BubbleSort2 (int[] npole)
{
int i; //pocet opakovani probublavani
int j; //index v poli
int pom; //pomocna promenna pro vymenu
for(i=0;i=i;j--) //vnitrni smycka
{
if (npole[j]>npole[j+1]) // prohodime prvky?
{
pom = npole[j];
npole[j]=npole[j+1];
npole[j+1]=pom;
}
}
}
}
==== Varianta 3 ====
V poli se posunuje nejmenší prvek na jeho začátek, při opakování zkracujeme průchod polem odpředu. Pracujeme s prvkem na pozici i-1 a i.
static void BubbleSort3 (int[] npole)
{
int i; //pocet opakovani probublavani
int j; //index v poli
int pom; //pomocna promenna pro vymenu
for(i=0;ii;j--) //vnitrni smycka
{
if (npole[j-1]>npole[j]) // prohodime prvky?
{
pom = npole[j-1];
npole[j-1]=npole[j];
npole[j]=pom;
}
}
}
}
===== Souhrnný ukázkový příklad =====
package trideni;
public class Main {
public static void main(String[] args) {
int[] pole = {4,3,2,1}; //nestridene pole
int index; //index pro pruchod pri vypisu
System.out.println("Trideni - nejvetsi nakonec");
BubbleSort1(pole);
for (index=0;index0;i--) //vnejsi smycka
{
for(j=0;jnpole[j+1]) // prohodime prvky?
{
pom = npole[j];
npole[j]=npole[j+1];
npole[j+1]=pom;
}
}
}
}
static void BubbleSort2 (int[] npole)
{
int i; //pocet opakovani probublavani
int j; //index v poli
int pom; //pomocna promenna pro vymenu
for(i=0;i=i;j--) //vnitrni smycka
{
if (npole[j]>npole[j+1]) // prohodime prvky?
{
pom = npole[j];
npole[j]=npole[j+1];
npole[j+1]=pom;
}
}
}
}
static void BubbleSort3 (int[] npole)
{
int i; //pocet opakovani probublavani
int j; //index v poli
int pom; //pomocna promenna pro vymenu
for(i=0;ii;j--) //vnitrni smycka
{
if (npole[j-1]>npole[j]) // prohodime prvky?
{
pom = npole[j-1];
npole[j-1]=npole[j];
npole[j]=pom;
}
}
}
}
}