Bubble Sort Python

Bubble Sort Python
Sortering er prosessen med å ordne verdiene i rekkefølge i form av lister. Ulike typer sortering diskriminerer på grunn av deres bruksteknikker og tilnærminger som rask sortering, utvalgssortering, flettesort, boble -sortering osv. Denne opplæringen er relatert til boble -sorteringen.

Boble sort

Dette er arrangering av elementer i en matrise som omhandler å bruke den enkleste sorteringsalgoritmen som brukes ved å bytte de tilstøtende elementene gjentatte ganger hvis ordren er feil.

Boble -sortering fungerer

For å sortere verdiene i stigende rekkefølge, inkluderer den første iterasjonen prosessen med å sammenligne og bytte. Den første indeksverdien og den andre blir sammenlignet. Hvis tilstanden er oppfylt, oppstår bytte og gjentas til slutten.

Algoritme / pseudokode for boble sortering

funksjon (matrise)
for jeg rettverdi
Bytt venstreverdi og høyre verdi
sluttfunksjon

Eksempel 1

Boble -sorteringsmekanismen brukes på Python -programmeringsspråket ved å bruke funksjonen som heter Bubble Sort. Syntaksen for funksjonen er at et nøkkelord 'def' brukes sammen med funksjonens navn. I funksjonsparameteren har vi passert en rekke som skal sorteres etter funksjonen. Så nå vil vi se den komplette funksjonaliteten eller si at kjernen i hele sorteringsprosessen er definert i funksjonens kropp. For det første vil vi erklære lengden på matrisen til en variabel gjennom en oppdragsoperatør ved å bruke den innebygde len () innebygde funksjonen.

# n = len (arr)

For tilgang til ethvert element i en matrise, bruker vi alltid en for loop på ethvert programmeringsspråk. Akkurat slik bruker Python også “For” -sløyfen i sorteringsprosessen for å gjøre det mulig for brukeren. Så matrisen vil bli krysset ved å bruke en for en loop.

# For i i rekkevidde (n - 1):

Her er "jeg" variabelen som representerer indeksnummeret i matrisen som har en rekke en fast størrelse minus en. Ettersom 'n' representerer størrelsen på matrisen, representerer (n-1) overgang av løkken til plasseringen av størrelsen minus en slik at vi kan iterere sløyfen en gang igjen etter en enkelt iterasjon.

Som beskrevet ovenfor, blir de to nærmeste tilstøtende indeksene sammenlignet for boble -sorteringen. Ved å bruke ovennevnte sløyfe får vi tilgang til en indeks. Si den første, for å få tilgang til neste indeks; Vi trenger videre en sløyfe. Dette er den indre sløyfen, og ovennevnte erklæres som en ytre sløyfe. Dette fenomenet ligner den todimensjonale matrisen (2D). Så la oss erklære den indre sløyfen.

# for j i rekkevidde (0, n-i-1):

'J' -variabelen er som 'jeg' for den ytre sløyfen, men dette vil representere neste verdi av den nåværende verdien av indeksen 'i', da vi har brukt logikken til 'n-i-1', så sløyfen vil itererer til posisjonen til å trekke verdien av "jeg" fra størrelsen på matrisen sammen med '-1' -verdien, vil dette føre til de tilstøtende to indeksene i matrisen.

Vi har fått tilgang til to verdier i matrisen, og det er på tide å sammenligne dem slik vi vet at sammenligningen blir gjort gjennom vinkelbrakettene. Vi må bruke '>' -braketten til stigende sortering.

Hvis arr [j]> arr [j + 1]:
arr [j], arr [j +1] = arr [j + 1], arr [j]

Hvis verdien på venstre side som er tilgjengelig først er større enn verdien til høyre, åpnes senere, blir begge verdiene byttet direkte uten å bruke noe involvering av tredjeplassen. I det andre tilfellet, gå mot neste stilling. Dette var hovedlogikkfunksjonen til boblen sortering.

Hopp utenfor løkkene. Etter det erklærer vi matrisen og gir den til funksjonen gjennom en funksjonsanrop.

Bubblesort (ARR).

Etter det vil den sorterte matrisen skrives ut. I den resulterende konsollen vises den resulterende verdien.

Du kan se at inngangsarrayen inneholder de tilfeldige verdiene, mens i den resulterende matrisen er alle elementene sortert i stigende rekkefølge.

Eksempel 2

Eksemplet ovenfor tar for seg å fortsette alle mulige sammenligninger selv om hele matrisen allerede er sortert. Dette fører til tidsforlengelsen av utførelsen gjennom hele matrisen. Så for å gjøre utførelsen av tidsbegrenset, vil vi bruke en tredje variabel. Her bruker vi en boolsk variabel for å angi variabelenes verdi som sant hvis bytte oppstår. Ellers regnes det som falskt.

Etter hver iterasjon, hvis det ikke oppstår noen bytte på grunn av bytte, vil verdien være falsk. Det refererer til når alle elementene i en matrise allerede er sortert, og det er ikke noe ytterligere krav til å sortere dem. Dette fenomenet brukes enkelt og kan redusere utførelsestiden og dra nytte av å optimalisere boble -sortering.

Inne. En ekstra variabel byttet blir erklært som falsk som standard innledningsvis. Men verdien endres når prosessen med bytte finner sted.

Byttet = falsk

Inne i både den ytre og den indre sløyfen skjer sammenligningen mellom verdiene til spesifiserte indekser; Hvis verdiene må byttes, blir den byttede variabelen omgjort til 'True', og verdiene blir byttet ut.

Men hvis ingen to verdier blir byttet, når verdiene allerede er ordnet, oppstår ingen bytte, så den byttede variabelen forblir falsk. Og så oppstår pausen. Denne sjekken oppnås gjennom en IF-uttalelse.

Hvis byttet == FALSE

Gå i stykker

Denne pausen vil være ansvarlig for å stoppe sløyfen fra å utføre videre. Som i dette eksemplet vil pausen skje ved indeksen på 1,2 og 3.

Etter å ha lagret filen, kan utførelsesverdiene sees gjennom konsollen. Du kan se de resulterende verdiene som er ordnet i stigende rekkefølge.

Eksempel 3

Dette eksemplet følger det samme konseptet som forklart i det andre eksemplet ved å bruke det samme byttet boolsk med bruk av en annen variabel på tidspunktet for å bytte verdiene. Dette er en temp -verdi. Dette er en mal som lagrer verdiene midlertidig.

Det samme eksemplet ovenfor brukes her. Vurder bare bytteprosedyren her. Den første indeksverdien lagres i variabelen 'temp' inne i løkkene. Og det plassen er fylt med verdien ved siden av i matrisen som den forrige verdien sammenlignes. Og at neste verdi nå erstattes med verdien som er til stede i temp. Dette kalles indirekte tildeling av verdier, og det bruker flere trinn enn direkte tildeling av verdier.

Den byttede variabelen vil bli erklært som sant i byttesaken. Utfør koden for å se resultatene.

Konklusjon

Artikkelen 'Bubble Sort' inneholder en kort introduksjon til sorteringsmetodikken gjennom algoritmen. En detaljert prosess med boble-sortering med en trinn-for-trinn-tilnærming blir diskutert. Spyder-verktøyet anbefales for implementering av Python-relaterte programmer. Hvert elementært eksempel skildrer bruken av boble -sortering på pytonspråk.