Bubble Sort Illustrasjon uten kode
Tenk på følgende usorterte radliste over tegn i alfabetet:
Q w e r t y u i o pDenne listen vil bli sortert i stigende rekkefølge som følger. I den første skanningen blir Q og W sammenlignet; Q er mindre enn W, så det er ingen bytte. Likevel, i den første skanningen, blir W og E sammenlignet; E er mindre enn w, så det bytter. Det nye tredje elementet, W, sammenlignes med R; R er mindre enn w, så det bytter. Det nye fjerde elementet, W, sammenlignes med T; T er mindre enn w, så det bytter. Det nye femte elementet, W, sammenlignes med Y; W er mindre enn y, og det er ingen bytte. Likevel, i den første skanningen, blir Y sammenlignet med U; U er mindre enn y, så det bytter. Det nye syvende elementet, Y, sammenlignes med i; Jeg er mindre enn y, og det bytter. Det nye åttende elementet, Y, sammenlignes med O; O er mindre enn y, og det bytter. Det nye niende elementet, Y, sammenlignes med P; P er mindre enn y, og det er bytte. Den første skanningen ender der. Resultatet for den første skanningen er,
Q e r t w u i o p yLegg merke til at det største elementet er på slutten etter den første skanningen. Skanning av alle de resulterende ti elementene, og mulig bytte, gjentas igjen å ha:
E r q t u i o p w yLegg merke til at det neste største elementet nå er det siste-men-ett-elementet, og det var ikke nødvendig å sammenligne det med det siste elementet, så en liten tid ville ikke vært bortkastet. Skanning av alle de resulterende ti elementene, og mulig bytte, gjentas igjen å ha:
E q r t i o p u w yLegg merke til at det tredje største elementet mot slutten nå er på tredje plassering fra slutten, og at det ikke var behov for å sammenligne det med de to siste elementene, og ingen grunn til å sammenligne de to siste elementene selv, og så litt liten tid ville ikke blitt bortkastet. Skanning av alle de resulterende ti elementene, og mulig bytte, gjentas igjen å ha:
E q r i o p t u w yLegg merke til at det fjerde største elementet mot slutten nå er på fjerde plassering fra slutten, og at det ikke var behov for å sammenligne det med de tre siste elementene, og ingen grunn til å sammenligne de tre siste elementene i seg selv, og så ville det ikke har blitt bortkastet. Skanning av alle de resulterende ti elementene, og mulig bytte, gjentas igjen å ha:
E q i o p r t u w yLegg merke til at det femte største elementet mot slutten nå er på femte plassering fra slutten, og at det ikke var behov for å sammenligne det med de fire siste elementene, og ingen grunn til å sammenligne de fire siste elementene i seg selv, og at tiden ikke ville ha blitt bortkastet. Skanning av alle de resulterende ti elementene, og mulig bytte, gjentas igjen for å ha:
E i o p q r t u w yResten av skanningsresultatene er som følger:
E i o p q r t u w yLegg merke til at ingen sortering har funnet sted for disse fire siste resultatene.
Det motsatte av alle de ovennevnte algoritmene kan gjøres for sorterende synkende.
Optimalisering av boble -sortering
Fra den grunnleggende definisjonen av boble -sortering, hvis det er N -elementer, vil det være N komplette skanninger. En skanning er en iterasjon. Så, de ti elementene ovenfor betyr ti komplette iterasjoner. Den totale tiden for å boble sortering av en liste (matrise) kan reduseres for mange usorterte lister. Dette innebærer boble -sorteringsstrategier. Boble -sortering er optimalisert med to strategier.
Første optimaliseringsstrategi
Legg merke til ovenstående at etter den første komplette iterasjonen er det største elementet på slutten, og det ville være bortkastet tid å få tilgang til det i den andre iterasjonen. Etter den andre iterasjonen er de to siste elementene i sine rette posisjoner, og tiden skal ikke bli bortkastet tilgang til dem i den tredje iterasjonen. Dette betyr at den andre iterasjonen skal ende ved n-1. Etter den tredje iterasjonen er de tre siste elementene i sine rette posisjoner, og tiden skal ikke bli bortkastet tilgang til dem i den fjerde iterasjonen. Dette betyr at den tredje iterasjonen skal ende på N-2. Etter den fjerde iterasjonen er de fire siste elementene i sine rette posisjoner, og tiden skal ikke bli bortkastet tilgang til dem i den femte iterasjonen. Dette betyr at den fjerde iterasjonen skal ende på N-3. Dette fortsetter.
Fra den grunnleggende definisjonen av boble -sort, må iterasjonen gjøres n ganger. Hvis telleren for n iterasjonene er på i, bør iterasjonen få tilgang til n - I -elementer for å unngå å kaste bort tid på slutten av matrisen; og med jeg begynner fra 0. Så det må være to java for-loops: den ytre for-loop itererer n ganger, og den indre for-loop itererer n-i ganger, for matriseelementene, for hver av n ganger. Iterere en matrise n - i ganger er den første strategien.
Andre optimaliseringsstrategi
Skulle den ytre for-loop virkelig iterere n ganger? Skulle den ytre for-loop for listen ovenfor iterere 10 ganger? - Nei, fordi de fire siste iterasjonene ikke ville endre noe (det gjør ingen sortering). Dette betyr at listen er sortert så snart den blir oppdaget; den ytre sløyfen skal gå i stykker, så sortering skal stoppe. Dette vil spare mer tid. Dette kan oppnås ved å ha en boolsk variabel for ytre sløyfe, som vil forbli usant i indre sløyfe når du bytter stopper for å finne sted.
Java -kode for boble -sortering
Følgende klasse har metoden for å gjøre sortering:
klasse aclassLegg merke til mens-betingelsen, “J < N - i;” for the inner for-loop, for the first strategy. Note the use of the boolean variable in the outer for-loop and the inner for-loop for the second strategy.
En passende hovedklasse for dette, er:
public class theclassArrayen sendes med henvisning til Bubblesort () -metoden i en annen klasse. Så innholdet er endret. Utgangen er:
E i o p q r t u w y
Konklusjon
Boble -sorterer ved å bytte tilstøtende elementer fra begynnelsen til slutten av listen. Denne prosedyren gjentas igjen og igjen til hele listen er sortert helt. Sortering er enten stigende eller synker. Boble -sortering skal optimaliseres, som forklart ovenfor.