ComputereProgrammering

Sortering teknikker i programmering: sortering "boble"

boblesortering er ikke kun for at være den hurtigste metode i øvrigt det lukker listen over de langsomste måder at organisere. Men det har sine fordele. Således metoden til sortering boble - den mest, at hverken er en naturlig og logisk løsning på problemet, hvis du ønsker at arrangere elementerne i en bestemt rækkefølge. Et almindeligt menneske manuelt, for eksempel, det vil bruge dem - bare ved intuition.

Hvor gjorde sådan et usædvanligt navn?

Metode navn kom op, ved hjælp af analogi af luftbobler i vandet. Det er en metafor. Lige så lidt luftbobler stiger opad - fordi deres vægtfylde er større end en væske (i dette tilfælde - vandet), og hvert array element, jo mindre er det den værdi, jo mere gradvis vej til toppen af listen numre.

Beskrivelse af algoritmen

boblesortering udføres på følgende måde:

  • første passage: elementerne i array numre er taget af de to par og også sammenlignet. Hvis nogle af elementerne i to-mands hold første værdi er større end det andet, at programmet gør dem udveksling steder;
  • følgelig det største antal ulykker enden af grupperingen. Mens alle de andre elementer forbliver som de var, i en kaotisk måde, og kræver mere sortering;
  • og derfor kræver en anden pass: Det produceres i analogi med den tidligere (allerede beskrevet) og har en række sammenligninger - minus én;
  • ved passage nummer tre sammenligninger, et mindre end den anden, og to, end den første. Og så videre;
  • opsummere at hver passage har (alle værdier i arrayet, den særlige antal) minus (passage antal) sammenligninger.

Selv kortere algoritme af et program kan skrives som:

  • et array af numre kontrolleres, så længe to numre findes, den anden af dem er bundet til at være større end den første;
  • forkert positioneret i forhold til hinanden elementer i arrayet software swaps.

Pseudokode baseret på algoritmen beskrevet

Den enkleste implementering udføres på følgende måde:

Sortirovka_Puzirkom procedure;

begynder

cyklus for j fra nachalnii_index til konechii_index;

cyklus for i fra nachalnii_index til konechii_index-1;

hvis massiv [i]> massiv [i + 1] (første element er større end et sekund), så:

(Ændring placerer værdier);

ende

Selvfølgelig er dette enkelhed kun forværrer situationen: jo enklere algoritmen, jo mere det manifesterer alle fejlene. Investering forholdet mellem tiden er for stor, selv for en lille array (her kommer i relativitet: Den tid, for lægmand kan synes lille, men i virkeligheden en programmør hvert sekund eller endda millisekund tæller).

Det tog den bedre gennemførelse. For eksempel, idet der tages hensyn til udveksling af værdier i array-steder:

Sortirovka_Puzirkom procedure;

begynder

sortirovka = true;

cyklus, indtil sortirovka = true;

sortirovka = false;

cyklus for i fra nachalnii_index til konechii_index-1;

hvis massiv [i]> massiv [i + 1] (første element er større end et sekund), så:

(Skift elementer steder);

sortirovka = true; (Identificeret at udvekslingen er foretaget).

End.

Begrænsninger

Den største ulempe - varigheden af processen. Hvor meget tid udføres sorteringsalgoritme boble?

Bly tid beregnes ud fra antallet af kvadrattal i arrayet - slutresultatet af den er proportional.

Hvis det værst tænkelige array er gået så mange gange, som det har elementer minus én værdi. Dette sker, fordi i sidste ende er der kun ét element, som ikke har noget at sammenligne, og den sidste aflevering gennem array bliver ubrugelig handling.

Desuden effektiv fremgangsmåde til sortering af en udveksling, som det kaldes, kun til arrays af lille størrelse. Store mængder data ved hjælp af processen vil ikke arbejde: resultatet vil være enten en fejl eller svigt af programmet.

værdighed

boblesortering er meget let at forstå. Den læseplaner af tekniske universiteter i studiet af bestilling elementer i sin vifte passere i første omgang. Metoden er let at gennemføre både sproget Delphi programmering (L (Delphi), og C / C ++ (C / C plus plus), en utrolig enkle værdier for placering algoritme i den rigtige rækkefølge og på Pascal (Pa). Boblesortering er ideelle for begyndere.

På grund af ulemperne ved algoritmen bruges ikke i somme formål.

Princippet Visuel sortering

Den oprindelige visning af grupperingen 8 22 4 74 44 37 1 7

Trin 8 22 1 4 74 44 37 1 7

8 22 4 74 44 1 37 7

8 22 4 74 1 44 37 7

8 22 4 1 74 44 37 7

8 22 1 4 74 44 37 7

8 1 22 4 74 44 37 7

1 8 22 4 74 44 37 7

Trin 2 1 8 22 4 74 44 7 37

1 8 22 4 74 7 44 37

1 8 22 4 7 74 44 37

1 8 22 4 7 74 44 37

1 8 4 22 7 74 44 37

1 4 8 22 7 74 44 37

Trin 3 1 4 8 22 7 74 37 44

1 4 8 22 7 37 74 44

1 4 8 22 7 37 74 44

1 4 8 7 22 37 74 44

1 4 7 8 22 37 74 44

Trin 4 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Trin 1 4 5 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Trin 6 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Trin 1 4 7 7 8 22 37 44 74

boblesortering eksempel i Pascal

eksempel:

const kol_mas = 10;

var massiv: array [1..kol_mas] af heltal;

a, b, k: heltal;

begynde

writeln ( 'input', kol_mas, 'elementer i arrayet');

en: = 1 til kol_mas gøre readln (massiv [a ]);

for en: = 1 til kol_mas-1 do begynde

til b: = a + 1 til kol_mas gør begynde

hvis massiv [a]> massiv [ b] derefter begynde

k: = massiv [a]; massiv [a]: = massiv [ b]; massiv [b]: = k;

ende;

ende;

ende;

writeln ( 'efter sortering');

en: = 1 til kol_mas gøre writeln (massiv [a ]);

ende.

EKSEMPEL boble sortering i C-sprog (C)

eksempel:

#include

#include

int main (int argc, char * argv [])

{

int massiv [8] = {36, 697, 73, 82, 68, 12, 183, 88}, i, ff;

for (;;) {

ff = 0;

for (i = 7; i> 0; i -) {

hvis (massiv [i] [i- 1]) {

swap (massiv [i], massiv [i- 1]);

ff ++;

}

}

hvis (ff == 0) break;

}

getch (); // display forsinkelse

returnere 0;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 da.birmiss.com. Theme powered by WordPress.