KompjûtersProgramming

Sorting techniken yn Programming: sorting "bubble"

bubble sort wurdt net allinne beskôge as de snelste metoade, bovendien, dan slút de list fan it stadichste manieren te organisearjen. Lykwols, it hat syn foardielen. Sa, de metoade fan sortearjen bubble - de measte dat gjin is in natuerlike en logyske oplossing foar it probleem, as jo wolle regeljen de items yn in spesifike folchoarder. In gewoane persoan mei de hân, bygelyks, dan sil brûke se - krekt troch yntuysje.

Wêr dienen sa'n ûngewoane namme?

Metoade namme kaam op, mei help fan 'e analogy fan lucht Bubbles yn it wetter. It is in metafoar. Krekt sa min lucht Bubbles opstean nei boppen - om't harren tichtheid is grutter as in floeistof (yn dit gefal - it wetter), en eltse array elemint, it lytsere it is de wearde, de mear stadige paad nei de top fan 'e list nûmers.

Beskriuwing fan it algoritme

bubble sort wurdt útfierd as folget:

  • earste pass: de eleminten fan 'e rige nûmers wurdt nommen troch de twa pearen en ek ferlike. As guon eleminten fan 'e twa-man team earste wearde is grutter as de twadde, it programma makket har útwikseling plakken;
  • dus, it grutste oantal mist 'e ein fan' e rige. Wylst alle oare eleminten bliuwe sa't se wiene, yn in gaoatyske wize, en fergje mear sortearjen;
  • en dêrom easkje in twadde paas: it is makke troch analogy mei de foarige (al beskreaun) en hat in oantal fergelikingen - minus ien;
  • at trochgong nûmer trije fergelikingen, ien minder as de twadde, en de twa, as it earste. Ensafuorthinne;
  • gearfetsje dat elke trochfeart hat (alle wearden yn 'e rige, it bysûndere getal) minus (trochgong number) ferlykjen.

Noch koarter algoritme fan in programma kin skreaun wurde as:

  • in rige fan nûmers wurdt kontrolearre sa lang as elk twa getallen wurde fûn, it twadde fan harren is bûn te wêzen grutter wêze as de earste;
  • ferkeard pleatst yn relaasje ta elkoar eleminten fan it array software seizoen wikselt.

Pseudocode basearre op it algoritme beskreaun

De ienfâldichste útfiering wurdt útfierd as folget:

Sortirovka_Puzirkom proseduere;

beginning

fytse foar j út nachalnii_index te konechii_index;

fytse foar i út nachalnii_index te konechii_index-1;

as massiv [i]> massiv [i + 1] (earste elemint grutter as in twadde), dan:

(Feroarje set wearden);

ein

Fansels, dit ienfâld allinne aggravates de situaasje: de ienfâldiger de algoritme, hoe mear it manifestearret alle gebreken. Investment ratio fan de tiid is te grutte sels foar in lyts array (hjir komt yn relativiteitsteory: It bedrach fan tiid foar de layman meie lykje lyts, mar yn feite in programmeur elke twadde of sels millisecond tellings).

It naam de bettere útfiering. Bygelyks, rekken hâldend mei de útwikseling fan wearden yn slachoarder lokaasjes:

Sortirovka_Puzirkom proseduere;

beginning

sortirovka = true;

cycle oant sortirovka = true;

sortirovka = Net-wier;

fytse foar i út nachalnii_index te konechii_index-1;

as massiv [i]> massiv [i + 1] (earste elemint grutter as in twadde), dan:

(Feroarje elements plakken);

sortirovka = true; (Identifisearre dat de útwikseling is makke).

Ein.

beheinings

De wichtichste neidiel - de doer fan it proses. Hoefolle tiid wurdt útfierd sortearjen algoritme bubble?

Lead tiid wurdt berekkene fanút it oantal fjouwerkante getallen yn de rige - de ein gefolch fan it is evenredich.

As de slimste gefal de rige wurdt trochjûn safolle kearen as it hat eleminten min ien wearde. Dat bart omdat yn 'e ein is der mar ien elemint, dy't hawwe neat te ferlykje, en de lêste kombinaasje troch de rige wurdt nutteloos aksje.

Dêrneist effektive metoade fan sortearjen in ienfâldich útwikseling, sa't it hjit, allinnich foar rigen fan lytse omfang. Grutte mannichten fan gegevens mei help fan it proses sil net wurkje: it resultaat sil wêze of in flater of mislearjen fan it programma.

weardigens

bubble sort is hiel maklik om te ferstean. De learplannen fan technyske universiteiten yn 'e stúdzje fan' e opbou eleminten fan syn array foarby yn it earste plak. De metoade wurdt maklik útfierd as in programmeartaal Delphi (D (Delphi), en de C / C ++ (C / C plus plus), in ûnfoarstelber simpele algoritme foar de lokaasje fan wearden yn de rjochter oarder en oan it Pascal (Pascal). Bubble sort is ideaal foar begjinners.

Troch de neidielen fan de algoritme is net brûkt yn buitenschoolse doelen.

Visual sortearring prinsipe

De earste werjefte fan de rige 8 22 4 74 44 37 1 7

Stap 1 8 22 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

Stap 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

Stap 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

Stap 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

Stap 5 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Stap 6 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Stap 7 1 4 7 8 22 37 44 74

bubble sort bygelyks yn Pascal

foarbyld:

const kol_mas = 10;

var massiv: array [1..kol_mas] fan integer;

a, b, k: integer;

begjinne

writeln ( 'input', kol_mas, 'eleminten fan' array ');

in: = 1 to kol_mas do readln (massiv [a ]);

in: = 1 to kol_mas-1 do begjinne

foar b: = a + 1 oant kol_mas do begjinne

as massiv [a]> massiv [ b] dan begjinne

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

end;

end;

end;

writeln ( 'after sort');

in: = 1 to kol_mas do writeln (massiv [a ]);

ein.

Foarbyld bubble sortearring yn C taal (C)

foarbyld:

#include

#include

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

{

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

foar (;;) {

ff = 0;

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

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

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

ff ++;

}

}

as (ff == 0) brekke;

}

getch (); // display fertraging

return 0;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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