BilgisayarlarProgramlama

Programlamada tasnif teknikleri: "balonu" sıralama

kabarcık sıralama yalnızca dahası, bu düzenlemeye yavaş yollardan listesini kapatır, en hızlı yöntem olarak kabul edilmez. Ancak, avantajları vardır. Böylece, kabarcık sıralama yöntemi - Belirli bir sıra ile öğeleri düzenlemek istiyorsanız ki, ne en sorununa doğal ve mantıklı bir çözümdür. Sıradan bir kişi el, örneğin, bunları kullanacak - sadece sezgi yoluyla.

Nerede böyle bir olağandışı isim yaptı?

Yöntem adı sudaki hava kabarcıklarının benzetme kullanarak gündeme geldi. Bu bir benzetme. Gibi küçük hava kabarcıkları yukarı doğru yükselir - bunların yoğunluğu (bu durumda - su) bir akışkan daha büyük olduğu için, ve her bir dizi elemanı, daha küçük bu değer, liste numaralarının üstüne daha kademeli bir yöntemdir.

Algoritmanın tanımı

aşağıdaki gibi kabarcık sıralama gerçekleştirilir:

  • ilk geçiş: dizi numaralarının elemanları iki çift tarafından alınan ve karşılaştırılır. İki kişilik bir ekip birinci değerin bazı unsurları ikinci büyükse, program onlara değişim yerleri yapar;
  • bunun sonucu olarak, büyük sayıda kaçırır dizinin sonu. Diğer tüm unsurlar oldukları gibi kaotik bir şekilde kalır, ve sıralama daha ihtiyaç duyarken;
  • ve bu nedenle, ikinci bir geçiş gerektirir: bu benzer şekilde yapılır, önceki (daha önce tarif edilen) ile bir karşılaştırma - vardır eksi on;
  • pasaj sayısı üç karşılaştırmalar, ilkinden daha, bir saniyeden daha az ve iki de. Ve böylece;
  • Her bir pasaj sahip olduğu (dizideki tüm değerleri, belirli bir sayı) eksi (geçiş sayısı) karşılaştırmaları özetler.

Bir programın Hatta daha kısa algoritma olarak yazılabilir:

  • herhangi iki sayı olarak bulunanlar gibi bir sayı dizisi bunların ikinci ilkinden daha büyük olmak zorundadır, uzun şekilde kontrol edilir;
  • yanlış dizi yazılım swap her diğer öğelere göre konumlandırılmış.

Yalancı kod tarif algoritmasına göre

aşağıdaki gibi basit uygulama yapılır:

Sortirovka_Puzirkom prosedürü;

başlangıç

konechii_index için nachalnii_index gelen j için döngüsü;

nachalnii_index i için devir konechii_index-1;

Eğer masif [i]> masif [i + 1] (bir saniyeden daha büyük bir birinci eleman), o zaman:

(Değişiklik değerlerini yerleştirir);

Tabii ki bu sadelik sadece durumu kötüleştirir: algoritma basit, daha bütün kusurları ortaya çıkar. zamanın Yatırım oranı (a programcı her saniye hatta milisaniye değerlidir olmayan kişiler tarafından zamanın miktarı küçük görünebilir, ama aslında görelilik geliyor burada) hatta küçük dizisi için çok büyüktür.

Daha iyi uygulanmasını aldı. Örneğin, göz önüne dizi yerlerde değerlerinin değişimi yapılmıştır:

Sortirovka_Puzirkom prosedürü;

başlangıç

sortirovka = Gerçek;

döngüsü sortirovka doğru = kadar;

sortirovka = false;

nachalnii_index i için devir konechii_index-1;

Eğer masif [i]> masif [i + 1] (bir saniyeden daha büyük bir birinci eleman), o zaman:

(Elemanlar yer değiştirme);

sortirovka = Gerçek; (Değişim yapıldığını tespit).

Bitiş.

Sınırlamalar

ana dezavantajı - işleminin süresi. Ne kadar zaman yapılır algoritma sıralama kabarcık?

Kurşun zaman dizisinde kare sayıların sayısından hesaplanır - bunun sonucudur orantılıdır.

Dizi çok kez geçirilir kötü durum size o değeri eksi unsurları olduğu gibi. Sonunda karşılaştırın yoktur ki, sadece tek bir unsur olduğundan bu olur ve dizinin aracılığıyla son pas yararsız eylem haline gelir.

Buna ek olarak, sadece küçük boyutlu diziler için, olarak adlandırılan, basit bir değişimi sıralama etkin bir yöntem. sürecin yardımıyla büyük miktardaki veriler çalışmaz: Sonuç bir hata veya programın başarısızlığı ya olacak.

haysiyet

kabarcık sıralama anlamak çok kolaydır. onun dizinin sipariş elemanlarının çalışmada teknik üniversitelerin müfredatları ilk etapta geçmektedir. yöntem Delphi programlama dili (L (Delphi) ve C / C ++ (C / C artı artı), doğru sırada ve en konum algoritmasının inanılmaz basit değerlerini hem uygulanması kolaydır Pascal (Paskal). Kabarcık sıralama başlayanlar için idealdir.

Nedeniyle algoritmanın sakıncaları için ders dışı amaçlarla kullanılmaz.

Görsel sıralama ilkesi

dizi 8 22 4 74 44 37 1 7 ilk görünüşüdür

Basamak 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 ila 22 1 4 74 44 37 7

8 1 22 4 74 44 37 7

1 ila 8 22 4 74 44 37 7

Aşama 2 1 8 22 4 74 44 7 37

1 ila 8 22 4 74 7 44 37

1 ila 8 22 4 7 74 44 37

1 ila 8 22 4 7 74 44 37

1 8 4 22 7 74 44 37

1 ila 4 8 22 7 74 44 37

Aşama 3 1 4 8 22 7 74 37 44

1 ila 4 8 22 7 37 74 44

1 ila 4 8 22 7 37 74 44

1 ila 4 8 7 22 37 74 44

1 4 7 8 22 37 74 44

Aşama 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

Aşama 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

Aşama 6 1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

7. Adım 1 4 7 8 22 37 44 74

Pascal baloncuk sıralama örneği

örnek:

const kol_mas = 10;

var masif: dizi [1..kol_mas] arasında bir tamsayı;

a, b, k,: tam sayı olduğu;

başlamak

writeln ( 'giriş', kol_mas, 'dizinin öğeleri');

Bir için: kol_mas için = 1 Readln do (masif [a ]);

Bir için: = 1 kol_mas-1'e başlayayım

b: kol_mas bir + 1 başlarım =

masif [a]> masif [eğer b] sonra başlayacak

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

uç uca gelir;

uç uca gelir;

uç uca gelir;

writeln ( 'tür sonra');

Bir için: kol_mas için = 1 writeln do (masif [a ]);

sonu.

C dilinde sıralama Örnek kabarcık (C)

örnek:

#include

#include

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

{

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

{(;;) için

ff = 0;

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

Eğer (masif [i] [l- 1]) {

takas (masif [i], masif [l- 1]);

ff ++;

}

}

(Ff == 0) kırmak ise;

}

getch (); // ekran gecikmesi

0 döndürür;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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