OrdinadorsProgramació

Tècniques de programació en la classificació: classificació de "bombolla"

ordenament de bombolla no només és considerat com el mètode més ràpid, d'altra banda, es tanca la llista de les maneres més lents per organitzar-se. No obstant això, té els seus avantatges. Per tant, el mètode de classificació de la bombolla - la majoria dels que tampoc és una solució natural i lògica al problema, si vol organitzar els elements en un ordre específic. Una persona ordinària manualment, per exemple, que els farà servir - només per la intuïció.

On va fer un nom tan inusual?

nom del mètode es va acostar, usant l'analogia de bombolles d'aire a l'aigua. És una metàfora. Així com petites bombolles d'aire pugin cap amunt - perquè la seva densitat és més gran que un fluid (en aquest cas - l'aigua), i cada element de la matriu, menor és el valor, la forma més gradual a la part superior dels números de la llista.

Descripció de l'algorisme

bombolla de classificació es realitza de la següent manera:

  • primer passi: els elements dels nombres de matriu és presa pels dos parells i també van comparar. Si alguns elements de l'equip de dos homes primer valor és més gran que el segon, el programa els fa cases de canvi;
  • en conseqüència, el major nombre de no arriba a la final de la matriu. Mentre que tots els altres elements romanen com estaven, d'una manera caòtica, i requereixen més de classificació;
  • i per tant requereixen un segon passi: es fa per analogia amb l'anterior (ja descrita) i té un nombre de comparacions - menys un;
  • en el pas nombre tres comparacions, un menys que la segona, i tots dos, que el primer. I així successivament;
  • resumir que cada passatge té (tots els valors de la matriu, el nombre particular) menys comparacions (nombre de passades).

algoritme encara més curta d'un programa es pot escriure com:

  • una matriu de nombres es comprova el temps que es troben dos nombres, la segona d'elles està destinada a ser més gran que el primer;
  • incorrectament posicionat en relació amb els altres elements de les permutes de programari array.

Pseudocodi basat en l'algoritme descrit

La implementació més simple es porta a terme de la següent manera:

procediment Sortirovka_Puzirkom;

principi

cicle per j de nachalnii_index a konechii_index;

cicle per a i de nachalnii_index a konechii_index-1;

si massiv [i]> massiv [i + 1] (primer element més gran que un segon), llavors:

(Modificar col·loca valors);

final

Per descomptat, aquesta simplicitat només agreuja la situació: com més simple l'algoritme, més es manifesta tots els defectes. taxa d'inversió de temps és massa gran fins i tot per una petita gamma (aquí ve en la relativitat: La quantitat de temps per al profà pot semblar petita, però, de fet, un programador cada segon o fins i tot mil·lisegon compte).

Es va prendre la millor aplicació. Per exemple, tenint en compte el canvi dels valors en els llocs de la matriu:

procediment Sortirovka_Puzirkom;

principi

sortirovka = true;

cicle fins sortirovka = true;

sortirovka = false;

cicle per a i de nachalnii_index a konechii_index-1;

si massiv [i]> massiv [i + 1] (primer element més gran que un segon), llavors:

(Canviar els elements llocs);

sortirovka = true; (Identificat que el canvi s'ha fet).

Fi.

limitacions

El principal desavantatge - la durada del procés. Quant de temps es porta a terme algoritme d'ordenació bombolla?

El termini d'execució es calcula a partir del nombre de nombres quadrats a la matriu - el resultat final de la mateixa és proporcional.

Si el pitjor dels casos la matriu es passa tantes vegades, ja que té menys elements d'un valor. Això succeeix perquè al final no és només un element, que no tenen res a comparar, i l'última passada a través de la matriu es converteix en acció inútil.

A més, mètode eficaç de classificació d'un intercanvi simple, com se l'anomena, només per arrays de mida petita. Grans quantitats de dades amb l'ajuda de procés no funcionarà: el resultat serà o bé un error o fracàs del programa.

dignitat

ordenament de bombolla és molt fàcil d'entendre. Els plans d'estudi de les universitats tècniques en l'estudi dels elements de comanda de la seva gamma passi en el primer lloc. El mètode és fàcil d'implementar tant el llenguatge Delphi programació (L (Delphi), i la C / C ++ (C / C plus plus), un increïblement simples valors d'algorisme de localització en l'ordre correcte i en el Pascal (Pascal). Ordenament de bombolla és ideal per a principiants.

A causa dels inconvenients de l'algoritme no s'utilitza en els propòsits extracurriculars.

Visual principi de classificació

La vista inicial de la matriu 8 22 4 74 44 37 1 7

Pas 22 ago 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

Pas 8 febrer 1 abril 22 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

Pas 3 1 4 8 22 jul 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

Pas 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

Pas 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

Pas 6 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Pas 1 abr 7 7 22 ago 37 44 74

exemple ordenar bombolla en Pascal

exemple:

kol_mas const = 10;

var massiv: array [1..kol_mas] de enter;

a, b, k: nombre enter;

començar

writeln ( 'entrada', kol_mas, 'elements de vector');

per a: = 1 a kol_mas fer readln (massiv [a ]);

per a un: = 1 a kol_mas-1 començarà fer

per b: = a + 1 a kol_mas do begin

Si massiv [a]> massiv [ b] després començar

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

acabar;

acabar;

acabar;

writeln ( 'després de tipus');

per a: = 1 a kol_mas fer writeln (massiv [a ]);

final.

bombolla Exemple de classificació en llenguatge C (C)

exemple:

# include

# include

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

{

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

per (;;) {

ff = 0;

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

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

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

ff ++;

}

}

si (ff == 0) break;

}

getch (); // retard de visualització

return 0;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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