KompyuterlarDasturlash

Dasturlash metodlarni saralash: "qabariq" saralash

Bubble Saralash faqat Bundan tashqari, tashkil qilish, eng sekin yo'llar ro'yxatini yumadi, eng tez usuli hisoblanadi emas. Biroq, uning afzalliklari bor. Shunday qilib, qabariq saralash usuli - Agar ma'lum bir tartibda ma'lumotlar tashkil bo'lsangiz, bu ham eng muammosiga tabiiy va mantiqiy yechim hisoblanadi. Oddiy inson qo'lda, masalan, ularni foydalanamiz - faqat sezgi orqali.

Qaerda bunday g'ayrioddiy nomini qildim?

Usuli nomi suvda bulutlarga analogiya foydalanib, yuqoriga keldi. Bu ifodani bo'ldi. Xuddi oz havo pufakchalari yuqoriga ko'tariladi - ularning zichligi (bu holda - suv) bir suyuqlik kattaroqdir, chunki, va har bir array element, kichik, u qiymati, ro'yxat raqamlar yuqori yanada izchil yo'lidir.

algoritm tavsifi

quyidagicha Bubble Saralash amalga oshiriladi:

  • birinchi Pass: array sonlar elementlar ikki juft tomonidan qabul qilingan, shuningdek, nisbatan bo'ladi. Ikki-odam jamoasi birinchi qiymati ba'zi elementlar ikkinchi katta bo'lsa, dastur, ularga valyuta o'rinlarni qiladi;
  • binobarin, eng ko'p sog'inib qator oxiri. boshqa barcha elementlar ular kabi tartibsiz tarzda, qoladi, va saralash ko'proq talab bo'lsa;
  • va shuning uchun ikkinchi to'pni talab: u bilan o'xshashlik amalga oshiriladi oldingi (allaqachon tasvirlangan) va taqqoslashlar sonini bor - minus biri;
  • o'tish raqami uch taqqoslashlar, birinchi ko'ra, bir soniyadan kam vaqt va ikki. Va shunday qilib,;
  • Har bir parcha bor, deb (qator barcha qadriyatlarni, xususan soni) minus (parcha raqami) taqqoslash umumlashtirish.

Agar dasturi Hatto qisqa algoritm sifatida yozilishi mumkin:

  • har ikki raqam topilgan sifatida raqamlar bir array ularning ikkinchi birinchi katta bo'lishi, degin, uzoq sifatida tekshiriladi;
  • noto'g'ri array dasturi swapların bir-biriga elementlariga nisbatan joylashganda.

Pseudocode tasvirlangan algoritm asosida

quyidagicha oddiy amalga oshiriladi:

Sortirovka_Puzirkom tartibi;

boshlanish

konechii_index uchun nachalnii_index dan j uchun aylanishi;

nachalnii_index men uchun aylanishiga konechii_index-1 uchun;

Agar massiv [i]> massiv [i + 1] (ikkinchi kattaroq birinchi element), keyin:

(O'zgarishlar qadriyatlarni joylashadi);

end

Albatta, bu soddalik faqat vaziyatni keskinlashtirmoqda: algoritm oddiy, ham u barcha kamchiliklarini namoyon. vaqt investitsiya nisbati (: a programcısı har ikkinchi hatto millisoniya soni rohib bo'lmagan kishi uchun vaqt miqdori kichik ko'rinishi mumkin, lekin aslida nisbiylik keladi, bu erda), hatto kichik qator uchun juda katta.

Bu yaxshi bajarilishini oldi. Misol uchun, hisobga array joylarda qadriyatlar almashishni olib:

Sortirovka_Puzirkom tartibi;

boshlanish

sortirovka = rost;

davr sortirovka haqiqiy = qadar;

sortirovka = FALSE;

nachalnii_index men uchun aylanishiga konechii_index-1 uchun;

Agar massiv [i]> massiv [i + 1] (ikkinchi kattaroq birinchi element), keyin:

(Elementlar joylarni o'zgartirish);

sortirovka = rost; (Valyuta qilingan, deb belgilangan).

End.

cheklashlar

Asosiy ahvolga tushgan - jarayonining davomiyligi. Qancha vaqt amalga oshiriladi algoritm saralash qabariq?

Qo'rg'oshin vaqt qator kvadrat sonlar qator hisoblanadi - uning oxiri natija proportsional bo'ladi.

array ko'p marta uzatiladi eng yomon voqea bo'lsa, u bir qiymati manfiy elementlari mavjud deb. oxirida solishtirish uchun hech narsa yo'q, bu faqat bir element bor, chunki, bu sodir bo'ladi, va qator orqali o'tgan Pass foydasiz harakat bo'ladi.

Bundan tashqari, u faqat kichik hajmi, tillo uchun, deb atalgan, oddiy almashinuvi saralash samarali usul. jarayoni yordamida katta miqdordagi ma'lumotlarni ishlamaydi: natija xato yoki dasturning etishmovchiligi ham bo'ladi.

qadr-qimmat

Bubble Saralash tushunish juda oson. uning qator buyurtirish elementlarini o'rganish texnik oliy o'quv yurtlari o'quv dasturlari birinchi joyda o'tadi. usuli Delphi dasturlash tili (L (Delphi) va C / C ++ (C / C plyus plyus), o'ng tartibda va Manzil algoritm bir nihoyatda oddiy qadriyatlarni har ikki amalga oshirish oson Paskal (Pascal). qabariq sort boshlanuvchilar uchun ideal.

Tufayli algoritm nuqsonlarga uchun ixtiyoriy maqsadlarda ishlatiladigan emas.

Visual Tartiblash tamoyili

qator 8 22 4 74 44 37 7 1 boshlang'ich view

Qadam 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-bosqich: 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-qadam: 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

Step 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

Qadam 6: 1, 4, 7, 8, 22, 37, 44 , 74

1 4 7 8 22 37 44 74

7-qadam: 1 4 7 8 22 37 44 74

Paskal qabariq sort misol

misol:

const kol_mas = 10;

var massiv: array [1..kol_mas] ning aniq raqam;

a, b, k: integer;

boshlash

writeln ( 'kiritish ", kol_mas, " qator elementlari');

a uchun: kol_mas uchun = 1 readln qilish (massiv [a ]);

a uchun: = 1 kol_mas-1 boshlaydi qilish

b: kol_mas uchun + 1 boshlanadi do =

massiv [a]> massiv [bo'lsa b] keyin boshlanadi

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

tugatish;

tugatish;

tugatish;

writeln ( 'turdagi keyin');

a uchun: kol_mas uchun = 1 writeln qilish (massiv [a ]);

end.

C tilida saralash O'RNAK ko'pik (C)

misol:

#include

#include

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

{

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

{(;;) uchun

ff = 0;

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

Agar (massiv [i] [i 1]) {

Swap (massiv [i], massiv [i 1]);

ff ++;

}

}

(Ff == 0) sindirish bo'lsa;

}

getch (); // ko'rsatish kechikish

0 qaytib;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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