Komputeran, Bernameyên
Gaven teknîkên li bernameyên: gaven "nepoxa"
sort peqpeqonkî ye, ne bi tenê wê be, bilez di rêbaza, ji bilî, ku digire di lîsteyê de ji slowest riyên ji bo amadekirina. Lê belê, ew xwedî avantajên wê. Bi vî awayî, li awayê gaven nepoxa - ya herî, ku ne çareseriyeke xwezayî û mentiqî de ji bo pirsgirêka e, ger tu dixwazî saz de tomar li nîzama taybet. An ji rêzê bi destan, ji bo nimûne, wê ji wan re bi kar tînin - bi tenê bi intuition.
Where did wisa navê nedîtî?
navê Method rabû, bi bikaranîna analogy ji peqpeqok air di nav avê de. Ev a şibandinê ye. Çawa ku peqpeqok hewa kêm rabe bi jor de - ji ber ku zêdebûna wan mezintir a herkoyî (di vê rewşê de - di avê de) e, û her yek element array, li biçûktir ev nirxa, di rê de gav bi gav zêdetir jor li ser hejmara lîsteyê de ye.
Description ji Rêbaza
sort nepoxa wiha çêkiriye:
- yekem pass: hêmanên hejmara array de ji aliyê du cotên birin û bi berhevdan. Heke hinek hêmanên ku her du-man tîma nirxa yekem mezintir ya duyem e, ku bernameya wan jî cihên rates;
- pêşekzanan, yê herî mezin, hejmara wabûna dawiya array. Gava ku hemû elementên din pevê wekî xwe bûn, bi awayekî aloztir, û pêwîstî bi zêdetir gaven;
- û ji ber vê yekê pêwîstî bi pass duyem: ku bi analogy bi made ya berê (ji berê şirove) heye hejmara danberhevê û - minus yek;
- li hejmara passage sê muqayesekirin, yek kêmtir ji ya duyem, û her du, ji ya pêşî. Û bi vî awayî li ser;
- kurtî, ku her tekstek heye (di hemû nirxên ku di array, hejmara taybetî) minus danberhevê (Cardinal passage).
Rêbaza Even kin ji bernameya dikare wekî nivîsîn:
- nedadî yên hejmar wekî dirêj kontrolkirin û çawa ku her du hejmar bi dîtin, ya duyem jî ji wan mehkûm e ku bibe mezintir ji ya pêşî;
- bi xeletî di têkiliyên bi hev elementên din yên nedana software array cih.
Pseudocode li ser Rêbaza şirove bingeha
Herî hêsan û pêkanîna tê kirin wiha hatiye lidarxistin:
prosedureke Sortirovka_Puzirkom;
destpêk
cycle bo j ji nachalnii_index bo konechii_index;
cycle bo i ji nachalnii_index bo konechii_index-1;
eger Massiv [i]> Massiv [i + 1] (element yekem mezintir a duyem), hingê:
(Guhertina Cih nirxên);
dawî
Bê guman, ev merdî tenê aggravates rewşa: algorîtmaya li sadetir, bêtir ew dîhar hemû qusûrên. ratio Investment ji dem jî ji bo array biçûk jî pir mezin e (li vir tê li relativity: The amount of time bo vejînin gifl biçûk, lê di rastiyê de bernameçêkerê her saniye an jî millisecond).
Ev girt pêkanîna çêtir e. Ji bo nimûne, kire nav danûstandina nirxên ku di ciyên array:
prosedureke Sortirovka_Puzirkom;
destpêk
sortirovka = true;
cycle heta sortirovka = true;
sortirovka = false;
cycle bo i ji nachalnii_index bo konechii_index-1;
eger Massiv [i]> Massiv [i + 1] (element yekem mezintir a duyem), hingê:
(Biguherîne hêmanên cihên);
sortirovka = true; (Hat diyarkirin ku danûstandina hatiye çêkirin).
End.
tengasîyên
Nebaşiya sereke - demajoya ji bo pêvajoyê. Çiqas demê vegerêne gaven algorithm nepoxa?
dem Lead ji hejmara hejmara square di array hesabkirin - li ser encama ev nîsbet e.
Eger rewşa herî xerab de array wek gelek caran derbas bûn wek ku hatiye hêmanên minus yek nirxa. Ev dibe ji ber ku di dawiyê de bi tenê yek element heye, ku tiştekî ji hev, û dawî pass bi rêya array action bêkêr dibe.
Li gel vê, awayê ji bo gaven danûstana sade, wekî ku tê gotin, bi tenê ji bo array ji size biçûk. mîqdarên mezin yên welat bi alîkariya pêvajoya xebata wê ne: di encama wê bibe, yan an error an têkçûna bernameya.
rûmet
sort nepoxa pir hêsan fêm bikin. The hîndekariyê de ji zanîngehên teknîkî di xebatê de ji hêmanên nizamî yên array wê derbas di rêza yekem de. Rêbaza han bi hêsanî wek zimanê bernameyên Delphi (D (Delphi) pêkanîn, û di C / C ++ (C / C plus plus), an algorithm qasî sade ji bo cihê nirxên li dora xwe û li Pascal (Pascal). Bubble sort îdeal ji bo arşîvkirin e.
Ji ber ve belî ya Rêbaza ku di armancên der nayê bikaranîn.
prensîba sorting Visual
Ku nêrîna destpêkê yên array 8 22 4 74 44 37 1 7
Step 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
Step 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 4 8 22 7 74 44 37
1 4 8 22 7 74 44 37
Gava 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
Gava 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
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
Gava 6 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
Step 7 1 4 7 8 22 37 44 74
nepoxa nimûne sort li Pascal
nimûne:
kol_mas const = 10;
var Massiv: array [1..kol_mas] ji hijmar e;
a, b, k: hijmar e;
destpêkirin
writeln ( 'input', kol_mas, 'hêmanên array');
ji bo: = 1 to kol_mas do readln (Massiv [a ]);
ji bo: = 1 to kol_mas-1 do dest pê
bo b: = a + 1 ji bo kol_mas dest bi
eger Massiv [a]> Massiv [ b] bi dest
k: = Massiv [a]; Massiv [a]: = Massiv [ b]; Massiv [b]: = k;
dawî;
dawî;
dawî;
writeln ( 'piştî sort');
ji bo: = 1 to kol_mas do writeln (Massiv [a ]);
dawî.
nepoxa MÎNAK gaven li zimanê C (C)
nimûne:
#include
#include
int sereke (int argc, char * argv [])
{
int Massiv [8] = {36, 697, 73, 82, 68, 12, 183, 88}, i, ff;
ji bo (;;) {
ff = 0;
ji bo (i = 7; i> 0; i -) {
Eger (Massiv [i]
swap (Massiv [i], Massiv [i- 1]);
ff ++;
}
}
Eger (ff == 0) bişkînin;
}
getch (); // dereng display
vegerin 0;
}.
Similar articles
Trending Now