Solosaina, Fandaharana
Manavaka teknika ao amin'ny fandaharana: manavaka "fefy"
karazana fefy fotsiny dia tsy heverina ho ny fomba haingana indrindra, koa, dia manidy ny lisitry ny slowest fomba mandamina. Na izany aza, dia manana ny tombony. Araka izany, ny fomba fanasokajiana fefy - indrindra fa na dia voajanahary sy mirindra vahaolana ho an'ny olana, raha te-handamina ny zavatra ao anatin'ny filaminana manokana. Ny olon-tsotra tanana, ohatra, dia mampiasa azy - fotsiny amin'ny zavatra manindry mandry.
Taiza no tsy mahazatra izany anarana?
Method anarana ireo dia tonga niakatra, amin'ny fampiasana ny fampitahana ny rivotra ka manjary miboiboika ao anaty rano. Fanoharana izany. Toy ny rivotra kely ka manjary miboiboika hitsangana miakatra - satria ny hakitroky dia lehibe kokoa noho ny ranoka (amin'ity tranga ity - ny rano), ka samy voaomana singa, ny kely kokoa dia ny zava-dehibe, ny miandalana kokoa ny lalana mankany an-tampon'ny lisitra isa.
Description ny algorithm
karazana fefy dia tanterahina toy izao manaraka izao:
- mandalo voalohany: ny singa ao amin'ny fihaingoana isa no naka ny roa tsiroaroa sy nampitaha. Raha misy singa roa-olona ekipa vidy aloha dia lehibe noho ny faharoa, ny fandaharana mahatonga azy ireo fifanakalozana toerana;
- noho izany, ny isan'ny lehibe indrindra nahavoa ny faran 'ny fihaingoana. Raha ny singa hafa rehetra mitoetra tahaka izy ireo, amin'ny fomba nisafotofoto, ary mitaky manavaka bebe kokoa;
- ary noho izany dia mila mandalo ny faharoa: izany dia atao amin'ny fanoharana tamin'ny teo aloha (efa voalaza) ary manana maro fampitahana - Miiba iray;
- amin'ny andalan-teny isan'ny fampitahana telo, ny iray kely noho ny faharoa, ary ny roa, noho ny voalohany. Sy ny sisa;
- mamintina fa ny tsirairay dia manana andalana (ny soa toavina ao amin'ny nitsangana, ny isa manokana) Miiba (andalan-teny maro) fampitahana.
Na dia fohy ny fandaharana algorithm azo soratana toy ny:
- ny nahay ny isa dia homarinana avy amin'ny teny raha mbola misy isa roa no hita, ny faharoa azy dia maintsy ho lehibe noho ny voalohany;
- diso napetraka raha oharina amin'ny samy izy singa ao amin'ny fihaingoana swaps rindrambaiko.
Pseudocode mifototra amin'ny algorithm voalaza
Ny fampiharana tsotra dia tanterahina toy izao manaraka izao:
Sortirovka_Puzirkom fomba fanao;
manomboka
tsingerin'ny for J avy nachalnii_index ny konechii_index;
tsingerin'ny fa avy nachalnii_index mba konechii_index-1;
raha massiv [aho]> massiv [aho + 1] (voalohany singa lehibe kokoa noho ny faharoa), avy eo:
(Fiovana dia mametraka soatoavina);
farany
Mazava ho azy, io tsotra ihany aggravates ny toe-draharaha: ny tsotra ny algorithm, no vao mainka izany mampiseho ny fahalemeny. Tahan'ny fampiasam-bola loatra ny fotoana lehibe ho an'ny kely na dia nahay (eto tonga amin'ny fihetsehan'ny zavaboary: ny fe-potoana ho an'ny laika toa kely, fa raha ny marina Programera rehetra na faharoa millisecond fanisana).
Nila fampiharana ny tsara kokoa. Ohatra, ny soso-kevitr'izy ny fifanakalozana ny soatoavina nitsangana toerana:
Sortirovka_Puzirkom fomba fanao;
manomboka
sortirovka = marina;
tsingerin'ny mandra-sortirovka = marina;
sortirovka = diso;
tsingerin'ny fa avy nachalnii_index mba konechii_index-1;
raha massiv [aho]> massiv [aho + 1] (voalohany singa lehibe kokoa noho ny faharoa), avy eo:
(Hanova zavatra toerana);
sortirovka = marina; (Fantatra fa ny fifanakalozana natao).
Farany.
fetra
Ny tena tombon-dahiny - ny faharetan'ny ny dingana. Adiny firy no nanao manavaka algorithm fefy?
Lead fotoana kajy avy amin'ny isan'ny kianja isa ao amin'ny fihaingoana - ny farany dia vokatry ny mitanila.
Raha ny ratsy indrindra ny tranga dia lasa toy ny voaomana imbetsaka araka izay manana singa Miiba sarobidy iray. Izany dia nitranga satria amin'ny farany dia misy singa iray ihany, izay manana na inona na inona ny mampitaha, ary ny farany ampandehaninao hamaky ny lasa nahay asa tsy misy ilàna azy.
Ankoatra izany, ny fomba mahomby fanasokajiana tsotra fifanakalozana, araka ny hoe, afa-tsy ho an'ny kely arrays ny habeny. Be dia be ny antonta-kevitra noho ny fanampian'ny dingana io dia tsy mety: ny vokany dia ho na fahadisoana na ny tsy fahombiazana ny fandaharana.
fahamendrehana
karazana fefy dia tena mora takarina. Ny fandaharam-pianarana ara-teknika ao amin'ny oniversite fianarana ny antokony singa ao aminy fihaingoana Ary tamin'ny voalohany. Ny fomba dia mora ny fampiharana na ny Delphi rindrambaiko teny (L (Delphi), ary ny C / C ++ (C / C miampy miampy), ny mampino tsotra soatoavin'ny toerana algorithm ao amin'ny marina filaminana sy amin'ny Pascal (Pascal). Bubble karazana dia mety tsara ho an'ny beginners.
Noho ny lafiny ratsy ny algorithm dia tsy ampiasaina amin'ny tanjona ankoatra ny fianarana.
Visual manavaka fitsipika
Ny voalohany jerena ny fihaingoana 8 22 4 74 44 37 1 7
Dingana 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
Dingana 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
Dingana 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
Dingana 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
Dingana 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
Dingana 6 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
Dingana 7 1 4 7 8 22 37 44 74
sort fefy ohatra in Pascal
ohatra:
const kol_mas = 10;
var massiv: fihaingoana [1..kol_mas] ny integer;
a, i, K: integer;
manomboka
writeln ( 'torohevitra', kol_mas, 'singa fihaingoana');
ho: = 1 ny kol_mas manao readln (massiv [ny ]);
ho: = 1 ny kol_mas-1 no manomboka
fa amin 'ny: = iray + 1 ny kol_mas no hanomboka
raha massiv [ny]> massiv [ b] dia manomboka
K: = massiv [iray]; massiv [ny]: = massiv [ b]; massiv [b]: = K;
farany;
farany;
farany;
writeln ( 'rehefa karazana');
ho: = 1 ny kol_mas manao writeln (massiv [ny ]);
farany.
OHATRA fefy manavaka amin'ny fiteny C (C)
ohatra:
#include
#include
int lehibe (int argc, Char * argv [])
{
int massiv [8] = {36, 697, 73, 82, 68, 12, 183, 88}, i, FF;
ho an'ny (;;) {
FF = 0;
ho an'ny (i = 7; i> 0, I -) {
raha (massiv [aho]
swap (massiv [aho], massiv [i- 1]);
FF ++;
}
}
raha (FF == 0) handrava;
}
getch (); // miseho avy hatrany
miverina 0;
}.
Similar articles
Trending Now