KompyutaProgramu

Kupanga mbinu katika programu: kuchagua "Bubble"

Bubble aina si tu kuchukuliwa kuwa njia ya haraka sana, hata hivyo, ni kufunga orodha ya njia slowest kuandaa. Hata hivyo, ina faida zake. Hivyo, njia ya kuchambua Bubble - wengi kwamba, wala ni ya asili na mantiki ufumbuzi kwa tatizo, kama unataka kupanga vitu ili maalum. mtu wa kawaida manually, kwa mfano, itakuwa kutumia nao - tu na Intuition.

alifanya jina kama kawaida wapi?

Mbinu jina walikuja, kwa kutumia mfano wa Bubbles hewa katika maji. Ni mfano. Kama vile hewa Bubbles kidogo kupanda zaidi - kwa sababu msongamano yao ni kubwa kuliko maji (katika kesi hii - maji), na kila safu ya vipengele, ndogo ni thamani, zaidi njia ya polepole ya juu ya idadi orodha.

Maelezo ya algorithm

Bubble aina ni kazi kama ifuatavyo:

  • kwanza kupita: mambo ya idadi ya safu ni kuchukuliwa na jozi mbili na pia ikilinganishwa. Kama baadhi ya vipengele vya timu mbili mtu thamani ya kwanza ni zaidi kuliko ya pili, mpango inawafanya maeneo kubadilishana;
  • kwa sababu hiyo, idadi kubwa ya misses mwisho wa safu. Wakati mambo mengine yote utabaki kama walikuwa, kwa namna ya machafuko, na inahitaji zaidi kuchagua;
  • na kwa hiyo zinahitaji kupita pili: ni yaliyotolewa na mlinganisho na ya awali (tayari ilivyoelezwa) na ina idadi ya kulinganisha - bala moja;
  • kifungu namba kulinganisha tatu, moja chini ya pili, na mbili, kuliko ya kwanza. Na kadhalika,
  • muhtasari kwamba kila kifungu ana (thamani zote katika safu, idadi fulani) bala (kifungu nambari) kulinganisha.

Hata mfupi algorithm ya mpango inaweza kuandikwa kama:

  • safu ya idadi imechaguliwa mradi nambari zozote mbili zinapatikana, pili wao ni uwezekano wa kuwa na zaidi ya kwanza;
  • kimakosa nafasi kuhusiana na mambo ya kila mmoja ya swaps safu programu.

Pseudocode kulingana na algorithm ilivyoelezwa

utekelezaji rahisi unafanywa kama ifuatavyo:

Sortirovka_Puzirkom utaratibu;

mwanzo

mzunguko kwa j kutoka nachalnii_index kwa konechii_index;

mzunguko kwa i kutoka nachalnii_index kwa konechii_index-1;

kama Massiv [i]> Massiv [i + 1] (kwanza kipengele zaidi ya pili), kisha:

(Mabadiliko maeneo maadili);

mwisho

Bila shaka, unyenyekevu hii tu aggravates hali: rahisi algorithm, zaidi hudhihirisha dosari wote. Investment uwiano wa muda ni kubwa mno hata kwa safu ndogo (hapa huja katika relativity: kiasi cha muda kwa layman inaweza kuonekana ndogo, lakini kwa kweli programu kila sekunde au hata millisecond makosa).

Ilichukua utekelezaji bora zaidi. Kwa mfano, kwa kuzingatia kiwango maadili katika maeneo safu:

Sortirovka_Puzirkom utaratibu;

mwanzo

sortirovka = kweli;

mzunguko mpaka sortirovka = kweli;

sortirovka = uongo;

mzunguko kwa i kutoka nachalnii_index kwa konechii_index-1;

kama Massiv [i]> Massiv [i + 1] (kwanza kipengele zaidi ya pili), kisha:

(Kubadilisha mambo maeneo),

sortirovka = kweli; (Kutambuliwa kwamba fedha umefanywa).

Mwisho.

upungufu

hasara kuu - muda wa mchakato. Kiasi gani wakati ni kazi kuchagua algorithm Bubble?

wakati Kiongozi ni mahesabu kutoka idadi ya idadi ya mraba katika safu - mwisho matokeo yake ni sawia.

Kama hali mbaya safu hupitishwa kwa mara nyingi kama ina mambo bala thamani moja. Hii hutokea kwa sababu katika mwisho kuna tu kipengele moja, ambayo hawana kulinganisha, na kupita mwisho kwa njia ya safu inakuwa haina maana hatua.

Aidha, ufanisi njia ya kuchambua fedha rahisi, kama ni kuitwa, tu kwa ajili ya arrays ya kawaida kidogo. kiasi kikubwa cha data kwa msaada wa mchakato haiwezi kufanya kazi: matokeo itakuwa ama makosa au kushindwa kwa mpango.

hadhi

Bubble aina ni rahisi sana kuelewa. mitaala ya vyuo vikuu kiufundi katika utafiti wa mambo ya mpangilio wa safu yake ya kupita katika nafasi ya kwanza. Mbinu ni rahisi kutekeleza wote Delphi lugha ya programu (L (Delphi), na C / C ++ (C / C pamoja plus), maadili incredibly rahisi ya eneo algorithm ili haki na saa Pascal (Pascal). Bubble aina ni bora kwa Kompyuta.

Kutokana na hasara ya algorithm si kutumika katika madhumuni zinginezo.

Visual kuchagua kanuni

Mtazamo wa awali wa safu 8 22 4 74 44 37 1 7

Hatua 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

Hatua 1 8 22 2 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

Hatua 1 4 8 3 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

Hatua 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

Hatua 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

Hatua 1 4 7 6 8 22 37 44 74

1 4 7 8 22 37 44 74

Hatua 1 4 7 7 8 22 37 44 74

Bubble aina mfano katika Pascal

mfano:

const kol_mas = 10;

var Massiv: safu [1..kol_mas] ya integer;

a, b, k: integer;

kuanza

writeln ( 'pembejeo', kol_mas, 'mambo ya safu');

kwa: = 1 kwa kol_mas kufanya readln (Massiv [a ]);

kwa: = 1 kwa kol_mas-1 kufanya kuanza

kwa b: = + 1 kwa kol_mas kufanya kuanza

kama Massiv [a]> Massiv [ b] kwa wakati huo kuanza

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

mwisho,

mwisho,

mwisho,

writeln ( 'baada ya aina');

kwa: = 1 kwa kol_mas kufanya writeln (Massiv [a ]);

mwisho.

MFANO Bubble kuchambua kwa lugha C (C)

mfano:

# Pamoja

# Pamoja

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

{

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

kwa (;;) {

ff = 0;

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

ikiwa (Massiv [i] [i- 1]) {

kubadilishana (Massiv [i], Massiv [i- 1]);

ff ++,

}

}

ikiwa (ff == 0) kuvunja,

}

getch (); // kuonyesha kuchelewa

kurudi 0;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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