KompüterProqramlaşdırma

Proqramlaşdırma üsulları çeşidlənməsi: "bubble" çeşidlənməsi

bubble sort yalnız üstəlik, bu təşkil etmək yavaş yolları siyahısını bağlayan, sürətli üsul hesab olunur. Lakin, onun üstünlükləri var. Belə ki, bubble çeşidlənməsi metodu - bir xüsusi qaydada maddələr təşkil etmək istəyirəm ki, əgər nə ən problem təbii və məntiqi həll edir. Adi bir şəxs əl, misal üçün, onları istifadə edəcək - yalnız intuisiya ilə.

Harada belə bir qeyri-adi ad idi?

Metod adı su hava Bubbles analogiya istifadə edərək, gündəmə gəldi. Bu məcaz var. Just az hava Bubbles yuxarı yüksələcək - onların sıxlığı (bu halda - su) bir maye daha çox, çünki hər bir array element, kiçik bu dəyər siyahısı ədəd üst daha tədricən yoldur.

alqoritm təsviri

aşağıdakı kimi bubble sort həyata keçirilir:

  • ilk pass: array nömrələri elementləri iki cüt ilə qəbul və həmçinin müqayisə edilir. iki-man komanda ilk dəyər bəzi elementləri ikinci daha çox olarsa, proqram onlara mübadiləsi yerləri edir;
  • nəticədə, ən çox misses serialın sonu. bütün digər elementləri onlar kimi bir xaotik şəkildə qalır və çeşidlənməsi daha tələb edərkən;
  • və buna görə də ikinci keçid tələb edir: Bu ilə analogiya tərəfindən qəbul edilir əvvəlki (artıq təsvir) və müqayisə sayı var - minus bir;
  • keçid sayı üç müqayisə, ilk daha bir ikinci az, və iki. Və s;
  • hər keçid var ki, (array bütün dəyərləri, o cümlədən nömrəsi) minus (keçid nömrəsi) müqayisə ümumiləşdirir.

bir proqram Hətta qısa alqoritmi kimi yazıla bilər:

  • hər iki ədəd aşkar kimi nömrələri bir sıra onların ikinci ilk daha çox ola bilərdi, uzun kimi yoxlanılır;
  • səhv array proqram svopları bir-birinə elementləri ilə bağlı konumlandırılmış.

Pseudocode təsvir alqoritm əsasında

aşağıdakı kimi sadə həyata keçirilməsi həyata keçirilir:

Sortirovka_Puzirkom qaydası;

başlanğıc

konechii_index üçün nachalnii_index olan j üçün dövrü;

nachalnii_index olan i dövrü konechii_index-1 etmək;

əgər massiv [i]> massiv [i + 1] (a ikinci daha çox ilk element), sonra:

(Değiştir dəyərlər verir);

son

Əlbəttə ki, bu sadəlik yalnız vəziyyəti daha da gərginləşdirir: alqoritm sadə, daha bütün qüsurlar göstərir. vaxt investisiya nisbəti (bir proqramçı hər ikinci və ya hətta millisecond sayar layman üçün vaxt məbləği kiçik görünə bilər, amma əslində nisbilik gəlir burada) hətta kiçik bir sıra üçün çox böyükdür.

Bu daha yaxşı həyata keçirilməsi aldı. Məsələn, nəzərə array yerlərdə dəyərlərin mübadiləsi alaraq:

Sortirovka_Puzirkom qaydası;

başlanğıc

sortirovka = true;

dövrü sortirovka əsl = qədər;

sortirovka = false;

nachalnii_index olan i dövrü konechii_index-1 etmək;

əgər massiv [i]> massiv [i + 1] (a ikinci daha çox ilk element), sonra:

(Elementləri yerlərdə dəyişdirmək);

sortirovka = true; (Mübadilə edilmişdir ki, müəyyən).

End.

Məhdudiyyətlər

əsas əlverişsiz - prosesinin müddəti. Nə qədər vaxt həyata keçirilir alqoritm çeşidlənməsi bubble?

Qurğuşun vaxt serialda kvadrat ədəd sayı hesablanır - bu son nəticə mütənasibdir.

array bir çox dəfə olaraq qəbul edilir, ən pis halda, bu, bir dəyər minus elementlər var. sonunda müqayisə heç bir şey yoxdur ki, yalnız bir element var, çünki bu olur və array vasitəsilə son pass faydasız hərəkət olur.

Bundan əlavə, yalnız kiçik Diziler üçün adlanır kimi, sadə mübadiləsi çeşidlənməsi effektiv üsulu. prosesin köməyi ilə məlumatların böyük məbləğlər işləməyəcək: nəticə bir səhv və ya proqram uğursuzluq ya olacaq.

ləyaqət

bubble sırala anlamaq çox asandır. onun serialın sifariş elementlərinin öyrənilməsi texniki universitetlərin tədris ilk növbədə keçir. üsul asanlıqla proqramlaşdırma dili Delphi (D (Delphi) kimi həyata keçirilir, və C / C ++ (C / C plus plus), sağ üçün və dəyərlərin yeri üçün inanılmaz sadə alqoritm Paskal (Pascal). Bubble sort başlayanlar üçün idealdır.

Due alqoritm çatışmazlıqlar üçün kənar məqsədlər üçün istifadə olunmur.

Visual çeşidlənməsi prinsipi

array 8 22 4 74 44 37 1 7 ilkin baxış

Addım 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

Addım 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

Addım 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

Addım 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

Addım 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

Addım 6 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Addım 7 1 4 7 8 22 37 44 74

Pascal bubble sort nümunəsi

Məsələn:

const kol_mas = 10;

var massiv: array [1..kol_mas] və tam;

a, b, k: tam;

başlamaq

writeln (input "kol_mas, " serialın elementləri ');

Bir üçün kol_mas üçün = 1 readln etmək (massiv [a ]);

Bir üçün: = 1 kol_mas-1 başlamaq yoxdur

b: kol_mas bir + 1 başlamaq yoxdur =

massiv [a]> massiv [if b] sonra başlayacaq

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

son;

son;

son;

writeln (sort sonra ');

Bir üçün kol_mas üçün = 1 writeln etmək (massiv [a ]);

son.

C dilində çeşidlənməsi NÜMUNƏ bubble (C)

Məsələn:

# daxildir

# daxildir

int əsas (int argc, char * argv [])

{

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

{(;;) üçün

ff = 0;

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

əgər (massiv [i] [i- 1]) {

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

ff ++;

}

}

(Ff == 0) qırmaq əgər;

}

getch (); // ekran gecikmə

0 qayıtmaq;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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