KomputilojProgramado

Ordigado teknikoj en programado: ordigado "bobelo"

bobelo varo estas ne nur konsiderata la plej rapida metodo, cetere, ĝi fermas la listo de la plej malrapida manieroj organizi. Tamen, ĝi havas liajn avantaĝojn. Tiel, la metodo de ordiga bobelo - la plej ke nek estas natura kaj logika solvo al la problemo, se vi volas aranĝi la erojn en specifa ordo. Ordinara persono permane, ekzemple, ĝi uzas ilin - nur intuicio.

Kie faris tian nekutiman nomon?

Metodo nomo venis supren, uzante la analogio de bobeloj de aero en la akvon. Ĝi estas metaforo. Kiel malgranda aero bobeloj leviĝi supren - ĉar ilia denseco estas pli granda ol fluida (en tiu kazo - la akvo), kaj ĉiu tabelo elemento, la pli malgranda estas la valoro, des pli laŭgrada maniero al la supro de la listo nombroj.

Priskribo de la algoritmo

bobelo varo estas farata tiel:

  • unua pasejo: la elementoj de la tabelo nombroj estas prenita de la du paroj kaj ankaŭ kompari. Se iuj elementoj de la du viroj teamo unua valoro estas pli granda ol la dua, la programo igas ilin interŝanĝo lokoj;
  • konsekvence, la plej granda nombro de misses la fino de la tabelo. Dum ĉiuj aliaj elementoj restas kiel estis, en ĥaosa maniero, kaj postulas pli ordigado;
  • kaj tial postulas duan pasejo: ĝi estas farita per analogio kun la antaŭa (jam priskribita) kaj havas kelkajn komparojn - minus unu;
  • ĉe pasejo numeron tri komparoj, unu malpli ol la dua, kaj la du, ol la unua. Kaj tiel plu;
  • resumi ke ĉiu paŝo havas (ĉiuj valoroj en la tabelo, la aparta nombro) minus (pasejo nombro) komparoj.

Eĉ pli mallonga algoritmo de programo povas esti skribita kiel:

  • tabelo de nombroj estas markita, dum ĉiuj du nombroj estas trovita, la dua de ili estas ligita esti pli granda ol la unua;
  • neregulan pozicion rilate al la alia elementoj de la tabelo programaro svopoj.

_pseudocode_ bazita sur la algoritmo priskribita

La plej simpla efektivigo efektivigas tiel:

Sortirovka_Puzirkom procedo;

komenco

ciklo por j el nachalnii_index al konechii_index;

ciklo por i de nachalnii_index al konechii_index-1;

se massiv [i]> massiv [i + 1] (unua elemento pli granda ol la dua), tiam:

(Ŝanĝo metas valoroj);

fino

Kompreneble, ĉi tiu simpleco nur pligravigas la situacion: la pli simpla la algoritmo, des pli ĝi manifestiĝas ĉiujn difektojn. Investo rilatumo de tempo estas tro granda eĉ por malgranda array (jen en relativeco: La kvanto de tempo por la laiko eble ŝajnas malgranda, sed fakte programisto ĉiun duan aŭ eĉ milisegundo grafoj).

Ĝi prenis la pli bona efektivigo. Ekzemple, konsiderante la interŝanĝo de valoroj vicojn lokoj:

Sortirovka_Puzirkom procedo;

komenco

sortirovka = vera;

ciklo ĝis sortirovka = vera;

sortirovka = malvera;

ciklo por i de nachalnii_index al konechii_index-1;

se massiv [i]> massiv [i + 1] (unua elemento pli granda ol la dua), tiam:

(Ŝanĝi elementojn lokoj);

sortirovka = vera; (Identigita ke la interŝanĝo estas farita).

Fino.

limigoj

La ĉefa malavantaĝo - la daŭro de la procezo. Kiom da tempo estas farata ordiga algoritmo bobelo?

Plumbo tempo estas kalkulita de la nombro de kvadrataj nombroj en la tabelo - la fina rezulto de tio estas proporcia.

Se la plej malbona kazo la tabelo estas pasita kiel multaj tempoj kiel ĝi havas elementojn minus unu valoro. Ĉi tio okazas ĉar en la fino estas nur unu elemento, kiu havas nenion por kompari, kaj la lasta paŝo tra la tabelo iĝas senutila agado.

Krome, efika metodo de ordiga simpla interŝanĝo, kiel oni nomas, nur por tabeloj de malgranda grandeco. Grandaj kvantoj de datumoj kun la helpo de procezo ne funkcios: la rezulto estos aŭ eraro aŭ fiasko de la programo.

digno

bobelo varo estas tre facile komprenebla. La instruplanoj de teknikaj universitatoj en la studo de la ordenamiento elementoj de lia tabelo En la unua loko. La metodo estas facila de implementar kaj la Delfos programlingvo (L (Delphi), kaj la C / C ++ (C / C plus plus), nekredeble simpla valoroj de loko algoritmo en la ĝusta ordo kaj en la Paskalo (Pascal). Bobelo speco estas ideala por komencantoj.

Pro la malavantaĝojn de la algoritmo ne estas uzata en extracurriculares celoj.

Vida ordigado principo

La komenca vido de la tabelo 8 22 4 74 44 37 1 7

Paŝo 8 22 4 1 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

Paŝo 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

Paŝo 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

Paŝo 1 4 7 4 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

Paŝo 1 4 7 5 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Paŝo 1 4 7 6 8 22 37 44 74

1 4 7 8 22 37 44 74

Paŝo 1 4 7 7 8 22 37 44 74

bobelo speco ekzemplo en Pascal

ekzemple:

const kol_mas = 10;

var massiv: tabelo [1..kol_mas] de entjero;

a, b, k: entjera;

komenci

writeln ( 'enigo', kol_mas, 'elementoj de tabelo');

por: = 1 por kol_mas fari readln (massiv [a ]);

por: = 1 por kol_mas-1 do komenci

por b: = a + 1 por kol_mas ja komenci

se massiv [a]> massiv [ b] tiam komenci

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

fini;

fini;

fini;

writeln ( 'post speco');

por: = 1 por kol_mas fari writeln (massiv [a ]);

fino.

EKZEMPLO bobelo ordigado en C lingvo (C)

ekzemple:

#include

#include

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

{

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

por (;;) {

ff = 0;

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

se (massiv [i] [I- 1]) {

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

ff ++;

}

}

se (ff == 0) rompos;

}

getch (); // display prokrasto

revenu 0;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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