ՀամակարգիչներԾրագրավորում

Դասավորում տեխնիկան ծրագրավորման տեսակավորող «փուչիկը»

պղպջակային տեսակավորումը է ոչ միայն համարվում է ամենաարագ եղանակը, ընդ որում, դա փակում ցանկը slowest ուղիներ կազմակերպել: Սակայն, այն ունի իր առավելությունները: Այսպիսով, եղանակը դասավորում փուչիկը - առավել, որ ոչ մի բնական եւ տրամաբանական լուծում է խնդրի, եթե դուք ուզում եք կազմակերպել իրերը մի կոնկրետ կարգով: Սովորական մարդ ձեռքով, օրինակ, դա կլինի օգտագործել դրանք, - պարզապես ինտուիցիայով:

Որտեղ էր նման անսովոր անունը.

Մեթոդը անունը եկան, օգտագործելով նմանակը օդային փուչիկները ջրի. Դա մի փոխաբերություն: Ճիշտ այնպես, ինչպես փոքր օդային փուչիկները բարձրանալ վեր - քանի որ նրանց խտությունը ավելի մեծ է, քան մի հեղուկ (այս դեպքում ջրի), եւ յուրաքանչյուր զանգվածի տարր, փոքր դա արժեքը, այնքան ավելի աստիճանական ճանապարհը դեպի վերեւում ցուցակը համարներով.

Նկարագրությունը ալգորիթմի

պղպջակային տեսակավորումը կատարվում է հետեւյալ կերպ.

  • Առաջին լեռնանցքում: տարրերը զանգվածի թվերի, որը տեղափոխվել է երկու զույգ եւ նաեւ համեմատել. Եթե որոշ տարրերի երկու մարդ թիմի առաջին արժեքը ավելի մեծ է, քան երկրորդը, որ ծրագիրը ստիպում է նրանց փոխանակման տեղերը.
  • հետեւաբար, ամենաշատ բացակայող վերջը զանգված: Մինչ մյուս բոլոր տարրերը մնում են, քանի որ նրանք էին, մի քաոսային կերպով, եւ պահանջում է ավելի շատ դասավորում.
  • եւ, հետեւաբար, պահանջում է երկրորդ ուղեգիրը: դա կատարվում է համանմանությունը նախորդ (արդեն նկարագրված) եւ ունի մի շարք համեմատություններ - մինուս մեկը.
  • ժամը անցումում համարը երեք համեմատությունները, մի քիչ է, քան երկրորդը, իսկ երկու, քան առաջինը: Եվ այսպես շարունակ:
  • ամփոփել է, որ յուրաքանչյուր հատվածը (բոլոր արժեքների զանգված, մասնավորապես համարը) մինուս (անցուղի համարը) համեմատություններ:

Նույնիսկ ավելի կարճ ալգորիթմ է ծրագրի կարելի է գրել նաեւ:

  • մի զանգված թվերի ստուգվում, քանի դեռ, ինչպես ցանկացած երկու թվերն են գտել, երկրորդը նրանցից պարտավորվում է լինի ավելի մեծ, քան առաջինը.
  • սխալ է դիրքերում առնչությամբ միմյանց տարրերի զանգված ծրագրային swaps.

Pseudocode հիման վրա ալգորիթմի նկարագրված

Ամենապարզ իրականացումը կատարվում է հետեւյալ կերպ.

Sortirovka_Puzirkom կարգը.

սկիզբ

շրջափուլի j ից nachalnii_index է konechii_index.

ցիկլը համար i-ից nachalnii_index է konechii_index-1;

եթե MASSIV [i]> MASSIV [i + 1] (առաջին տարրը ավելի մեծ է, քան երկրորդ), ապա

(Փոփոխություն դնում արժեքներ).

վերջ

Իհարկե, դա հիմարություն է միայն վատթարացնում է իրավիճակը, որ պարզ ալգորիթմը, ապա դա ավելի արտահայտվում է բոլոր թերությունները: Ներդրումային հարաբերակցությունը ժամանակին չափազանց մեծ է նույնիսկ մի փոքր զանգված (այստեղ գալիս է հարաբերականության: Գումարը ժամանակի համար մարդ կարող է թվալ փոքր, բայց, փաստորեն, մի ծրագրավորող ամեն երկրորդ կամ նույնիսկ միլիվայրկյան ակնկալում):

Այն տեւել է ավելի լավ իրականացումը: Օրինակ, հաշվի առնելով փոխանակումը արժեքների array վայրերում:

Sortirovka_Puzirkom կարգը.

սկիզբ

sortirovka = ճիշտ;

ցիկլը մինչեւ sortirovka = ճիշտ;

sortirovka = կեղծ;

ցիկլը համար i-ից nachalnii_index է konechii_index-1;

եթե MASSIV [i]> MASSIV [i + 1] (առաջին տարրը ավելի մեծ է, քան երկրորդ), ապա

(Փոխել տարրերի տեղերը):

sortirovka = ճիշտ; (Նույնացնել որ փոխանակման է արվել):

Վերջը:

սահմանափակումները

Հիմնական թերությունն այն տեւողությունը գործընթացի: Թե որքան ժամանակ է կատարվում դասավորում ալգորիթմ փուչիկը.

Կապար ժամանակը հաշվարկվում թվի քառակուսի թվերի ին զանգված, - վերջնական արդյունքը այն է համամասնական.

Եթե վատագույն զանգվածը անցել, քանի որ շատ անգամ, քանի որ այն ունի տարրեր, հանած մեկ արժեքի. Սա տեղի է ունենում այն պատճառով, որ ի վերջո կա միայն մեկ տարր, որը նմանը չունի, իսկ վերջին լեռնանցքում միջոցով զանգված դառնում է անիմաստ գործողություն.

Ի լրումն, արդյունավետ մեթոդ է դասավորում մի պարզ փոխանակում, քանի որ այն կոչվում է, միայն զանգվածների փոքր չափի. Մեծ քանակությամբ տվյալների հետ օգնությամբ գործընթացի չի աշխատում: արդյունքը կլինի կամ մի սխալ կամ ձախողումը ծրագրի:

արժանապատվություն

պղպջակային տեսակավորումը շատ հեշտ է հասկանալ. Կրթական ծրագիրն տեխնիկական համալսարաններում ուսումնասիրության պատվիրելով տարրերի իր զանգված անցնում է առաջին տեղը: Որ եղանակը շատ հեշտ է իրականացնել, այնպես էլ Delphi ծրագրավորման լեզուն (L (Delphi), եւ C / C + + (C / C գումարած գումարած), աներեւակայելի պարզ արժեքները, գտնվելու ալգորիթմի ճիշտ հերթականությամբ, եւ, Պասկալ (Պասկալ) Bubble տեսակ իդեալական սկսնակների համար.

Պայմանավորված է թերությունների մասին ալգորիթմի չի օգտագործվում է արտադպրոցական նպատակներով:

Տեսողական տեսակավորման սկզբունքը

Նախնական տեսակետը զանգված 8 22 4 74 44 37 1 7

Քայլ 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

Քայլ 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

Քայլ 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

Քայլ 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

Քայլ 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

Քայլ 6 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Քայլ 7 1 4 7 8 22 37 44 74

պղպջակային տեսակավորումը օրինակն Պասկալ

օրինակ.

const kol_mas = 10;

var MASSIV: array [1..kol_mas] անձնագիրը integer;

ա, բ, k. ամբողջ թիվ.

սկսել

writeln ( «մուտքագրման ', kol_mas, « տարրերից զանգված');

մի. = 1 է kol_mas անել readln (MASSIV [ա ]);

մի. = 1 է kol_mas-1 անել սկսել

համար b = ա + 1 kol_mas չեն սկսում

եթե MASSIV [ա]> MASSIV [ b], ապա սկսում

K = MASSIV [ա]. MASSIV [ա]: = MASSIV [ b]. MASSIV [b]: = k;

վերջ;

վերջ;

վերջ;

writeln (հետո տեսակ ');

մի. = 1 է kol_mas անել writeln (MASSIV [ա ]);

վերջը:

ՕՐԻՆԱԿ պղպջակների դասավորում է C լեզվով (C)

օրինակ.

#include

#include

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

{

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

համար (;;) {

ff = 0;

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

եթե (MASSIV [i] [i- 1]) {

Փոխանակում (MASSIV [i], MASSIV [i- 1]);

ff ++;

}

}

եթե (FF == 0) կոտրել.

}

getch (); // ցուցադրում ուշացում

վերադառնալ 0;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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