Bucket Sort C ++

Bucket Sort C ++

Sortering er en metode som vi bestiller elementene i en sekvens. Bucket Sort er en av sorteringsalgoritmene, men denne algoritmen er litt annerledes enn de andre algoritmene. En bøtte, som navnet tilsier, inneholder noe i et eget rom som en beholder. Denne algoritmen plasserer elementene i bøtta i henhold til tilstanden. Elementene er delt inn i forskjellige bøtter, og sortering utføres på hver bøtte. Vi kan bestemme hvilken algoritme som brukes til å sortere bøttene. De andre navnene for Bucket Sort er Bin Sort og Radix Sort. Gruppering av elementer som skal lagres i bøtter gjøres jevn. Bucket Sort er algoritmen som er bra med små matriser. Men når det gjelder å sortere de større matriser, er denne algoritmen ikke foretrukket fordi kompleksiteten øker og ytelsen avtar. Denne algoritmen brukes mest på de flytende punktverdiene der vi må ensartet gruppere elementene i matrisen.

Fordeler:

Å bruke bøttesorter i programmering har noen få fordeler:

  • Det er raskt på grunn av ensartet distribusjon.
  • Antall sammenligninger er mindre enn i andre sorteringsteknikker.

Bøttesorter er å foretrekke når vi må distribuere dataene og når du har å gjøre med flytende punktverdier.

Spredning og samlet tilnærming

Bøtte-sorteringen fungerer på den spredte og samtaletilnærmingen. Den sprer først elementene i bøtta enhetlig. Når de er sortert i bøtta, blir de samlet på ett sted og sorterer matrisen. Denne teknikken sparer oss fra sammenligningen av hvert matriseelement med hverandre som øker kompleksiteten og gjør kompilasjonsprosessen treg.

Bøttesorter sorterer matriser ved å dele opp matriseelementene i bøtter. Hver bøtte lagres deretter på et eget sted. Lagringsprosessen kan gjøres ved hjelp av forskjellige teknikker eller algoritmer eller ved rekursivt anvendelse av bøtte -sort -algoritmen.

Eksempel:

Nå forklarer vi arbeidet med bøttersortering ved hjelp av et eksempel. Ulike metoder brukes for sortering og distribusjon av matriser.

#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
void BucketSort (float array_0 [], int n)
vektor b [n];
for (int i = 0; i< n; i++)
int bi_0 = n * array_0 [i];
B [BI_0].push_back (array_0 [i]);

for (int i = 0; i< n; i++)
Sorter (B [i].Begynn (), B [i].slutt());
int indeks = 0;
for (int i = 0; i< n; i++)
for (int j = 0; j < b[i].size(); j++)
array_0 [indeks ++] = b [i] [j];

int main ()
float arr [] = 0.7, 0.5, 0.6, 0.65, 0.4;
int n = sizeof (arr) / størrelse av (arr [0]);
BucketSort (arr, n);
cout<< "Sorted array is \n";
for (int i = 0; i< n; i++)
cout<retur 0;

Først av alt, inkluder de tre viktige bibliotekene -, og . Biblioteket inneholder alle metodene for sortering og søk. Siden vi sorterer utvalget av flytende punktverdier, er det obligatorisk å inkludere dette biblioteket i koden. Etter dette, inkluder biblioteket som inneholder alle innebygde metoder som vi trenger å legge inn og sende ut dataene. Det tredje og siste biblioteket er . Vektoren er som en matrise, men den inneholder en variabel størrelse. Vektorer kan endre størrelsen på en matrise til kjøretid; Det er deres spesialitet. Siden vi bruker vektorene i koden vår, er det viktig å importere et bibliotek som inkluderer vektoren i den.

Etter å ha importert disse bibliotekene, bruk "Namespace Std". Definer dessuten en metode som heter "BucketSort" av Return Type Void. Pass to parametere i den. Den første parameteren er float -typen "array_0" som er sortert ved hjelp av bøtte -sorteringen. Den andre parameteren er en heltallstypevariabel “N”. Deretter definerer du en vektorutvalg av flytende punktdatatype. Matrisen er "B" av størrelse "n". En vektor-type matrise brukes fordi matrisens størrelse er ukjent. Legg nå elementene i forskjellige bøtter ved hjelp av "for" -sløyfen. Forklar "jeg" iteratoren og setter tilstanden til å sløyfe til iteratoren når antall elementer i matrisen. “N” -attributtet viser matrisestørrelsen som er ukjent. Vi observerer hvordan du får størrelsen på en matrise i hovedmetoden (). Øk "jeg" iterator. Definer en variabel i "for" -sløyfen hvis størrelse "n" multipliseres med matriseverdiene som er lagret i iteratoren.

I vektorarrayen bruker du Push_back () -funksjonen for å skyve det arrayelementet. Etter å ha presset matrisen i bøtter, sorter disse bøttene ved hjelp av en annen "for" -sløyfe. Initialiser iteratoren av løkken og iterert til den når størrelsen og holder trinn til sløyfen. Sorter matrisen i kroppen av “for” ved å kalle sort () -metoden til algoritmebiblioteket. Pass to parametere i denne funksjonen. Det første argumentet viser begynnelsesindeksen for matrisen, og det andre argumentet viser sluttindeksen for matrisen. Begynnende () -funksjonen starter sorteringen og slutt () -funksjonen stopper på den siste indeksen. Erklære en variabel utenfor kroppen av "for" for å få indeksen. Bruk den nestede "for" -løkken for å kombinere matriseelementene etter sortering i separate bøtter.

Ring dessuten Main () -metoden (). Her erklærer en flytende punkt -matrise “ARR” og initialiser det. Definer deretter et heltall "n" for å få gjenstandene i matrisen. Størrelsen på (ARR) -funksjonen får størrelsen på en matrise i byte. Den multipliserer størrelsen med 10 og størrelsen på (arr [0]) metoden får bare ett element. Ved å dele begge deler kan vi skaffe oss de totale komponentene i matrisen. Nå, påkalle BucketSort () -metoden. Denne funksjonen sorterer matrisen ved å bruke Bucket Sort -algoritmen. Representere en "sortert matrise er" -melding på konsollen ved hjelp av “cout” -kommandoen. For å vise den sorterte matrisen, bruk "For" -løkken og sett tilstanden til antall elementer i matrisen. Bruk "cout" i kroppen av "for" for å vise den oppdaterte matrisen.

Konklusjon

Vi diskuterte arbeid og implementering av bøtte -sortering i C++. Ettersom navnet er selvforklarende, deler det matrisen og lagrer dem i bøtta. Etter å ha sortert matrisen, kombineres alle bøttene i en sekvens. Denne bøttesorteringen er å foretrekke når vi tar for oss flytende punktverdier fordi den deler bøttene basert på forskjellige forhold og den brukes til å distribuere dataene jevnt. Artikkelen inneholder all informasjonen du bør vite før du implementerer bøttesorteringen. Noen forskjellige sorteringsteknikker og algoritmer brukes til å sortere matrisen; Alle metodene har fordeler og ulemper. Hva denne metoden har er plusspunktet at den er raskt og den sorterer matrisen med minimum sammenligning. Men når vi har et stort utvalg, er ikke bøttesorteringen et godt alternativ. Artikkelen oppsummerer her med en kort oversikt over bøttesorteringen.