OrdenagailuakProgramazioa

Sailkatzeko programazio teknikak: sailkatzeko "burbuila"

burbuila ordenatu, ez da soilik jotzen metodoa azkarrena izan da, gainera, antolatzeko geldoena modu zerrenda ixten du. Hala ere, bere abantailak ditu. Horrela, burbuila ordenatzeko metodoa - eta gehienetan ez arazoari irtenbide naturala eta logikoa da, ordena jakin batean elementuak ordenatzeko nahi baduzu. pertsona arrunt bat eskuz, adibidez, horiek erabiltzeko izango da - besterik intuizioa arabera.

Non egin esaterako izena ezohiko?

Metodo izen polit bat egin dute, aire uretan burbuila analogia erabiliz. Metafora bat da. Just gisa txiki aire burbuila igoko goranzko - beren dentsitatea arina (kasu honetan - ura) baino handiagoa delako, eta array elementu bakoitza, txikiagoa balioa, zerrendako zenbakiak goian modu gehiago pixkanakako da.

Algoritmo azalpena

burbuila moduko honela egiten da:

  • Lehenengo pass: array zenbakiak elementu bi bikoteak hartu eta, gainera aldean. bi gizon taldeak lehen balioa elementu batzuk bigarrena baino handiagoa bada, programa egiten ditu truke lekuetan;
  • , Ondorioz kopuru handiena misses array amaieran. Beste elementu guztiak geldituko dira berriz dutela esateko, kaotikoa modu batean, eta gehiago sailkatzeko eskatzen;
  • eta, beraz, bigarren pass bat eskatzen: da antzekotasun egindako aurreko (dagoeneko deskribatu) eta konparaketak ditu - ken bat;
  • pasarte kopurua hiru konparazioak, bigarrena baino bat gutxiago, eta bi, lehena baino. Eta abar;
  • laburbiltzen pasarte bakoitzak ditu (array balio guztiak, zenbaki zehatz) ken (paso zenbakia) konparazioak.

programaren algoritmoa Nahiz laburragoa honela idatz daiteke:

  • zenbakiak sorta bat luze gisa markatuz bi zenbaki edozein topatu ahala, horietako bigarrena lotuta dago lehenengoa baino handiagoa izan da;
  • gaizki beste array software trukeak elementu bakoitzaren aldean kokatuta.

Pseudocode oinarritutako deskribatu algoritmoa on

ezartzea errazena egiten da, honela:

Sortirovka_Puzirkom prozedura;

hasita

nachalnii_index to konechii_index batetik j zikloa;

i ziklo nachalnii_index batetik konechii_index-1 da;

bada massiv [i]> massiv [i + 1] (lehen elementu segundo bat baino handiagoa), eta:

(Aldaketa jartzen balioak);

end

Jakina, soiltasuna hau bakarrik, egoera larriagotu: errazagoa algoritmoa, gehiago flaws guztiak manifestuak. Inbertsio denbora ratioa oso handia da, nahiz eta multzo txiki bat (hemen Erlatibitatearen dator: denbora kopuru layman for txikia dirudi, baina, egia esan, programatzaile bigarren edo baita milisegundo zenbatzen behin).

ezartzeko hobe hartu du. Adibidez, baloreak trukatzeko array kokapenak kontuan hartuta:

Sortirovka_Puzirkom prozedura;

hasita

sortirovka = true;

ziklo sortirovka = Egia arte;

sortirovka = false;

i ziklo nachalnii_index batetik konechii_index-1 da;

bada massiv [i]> massiv [i + 1] (lehen elementu segundo bat baino handiagoa), eta:

(Aldatuko elementu tokiak);

sortirovka = true; (Identifikatu trukatzea egin da hori).

End.

mugak

The Desabantaila nagusia - prozesuaren iraupena. Zenbat denbora egin da algoritmo ordenatzeko burbuila?

Berun denbora zenbakiak plazan kopuruaren kalkulatzen da array - Azken emaitza horren proportzionala da.

array beste aldiz gainditu da kasu txarrena bada balio bat ken elementu baitu. Hau gertatzen azkenean, ez elementu bat bakarrik dagoelako, eta horrek ez du zerikusirik alderatu dituzte, eta array bidez azken mendatean alferrikakoa ekintza bihurtzen da.

Horrez gain, truke sinple bat ordenatzeko, deritzo, tamaina txiki matrizeak soilik metodo eraginkorra. Prozesu laguntzarekin, datu kopuru handiak ez du funtzionatzen: emaitza bai errore bat edo programa porrota izango da.

duintasuna

burbuila moduko oso erraza da ulertzeko. ordenazio bere array elementu ikerketan unibertsitate teknikoak curriculum lehen tokian pasatzen. Metodo erraza da bai Delphi programazio hizkuntza (L (Delphi), eta C / C ++ (C / C plus plus), kokapen algoritmoa balioak oso erraz baten ordena egokian eta ezartzeko Pascal (Pascal). Bubble moduko hasiberrientzako aproposa.

to algoritmoa desabantaila dela-eta, ez da kanpoko helburuetarako erabiltzen.

Visual ordenazio printzipio

Hasierako array 8 22 4 74 44 37 1 7 ikuspegia

Step 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

Step 1 8 2 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

Step 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

Step 1 4 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

Step 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

Step 1 4 6 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Step 7 1 4 7 8 22 37 44 74

burbuila moduko adibide Pascal

Adibidez:

konst kol_mas = 10;

var massiv: array [1..kol_mas] ren zenbaki oso;

a, b, k: zenbaki oso;

hasiko

writeln ( 'input', kol_mas, 'array elementu');

for a: = 1 kol_mas egin readln (massiv [a ]);

baterako: = 1 kol_mas-1 egin hasiko

b for: = a + kol_mas 1era hasiko ez

bada massiv [a]> massiv [ b] ondoren hasiko

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

bukatzen;

bukatzen;

bukatzen;

writeln ( 'moduko ondoren');

baterako: = 1 kol_mas egin writeln (massiv [a ]);

amaiera.

ADIBIDEA burbuila C hizkuntzan sailkatzeko (C)

Adibidez:

#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 -) {

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

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

ff ++;

}

}

bada (ff == 0) hondatzen,

}

getch (); // pantaila atzerapena

itzultzeko 0;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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