Module: (Python) İkinci dereceden sıralamalar


Problem

1 /7


kabarcık sıralama

Theory Click to read/hide

İkinci dereceden sıralamalar

Sıralama - bir dizinin (listenin) öğelerini belirli bir sırayla yeniden düzenlemedir.

Kabarcık yöntemi (kabarcık sıralama) veya basit değişimlere göre sıralama).
Türün ölümsüz bir klasiği. Eylem ilkesi basit: diziyi baştan sona dolaşıyoruz, aynı anda sıralanmamış komşu öğeleri değiştiriyoruz. Son sıraya ilk geçiş sonucunda "pop up" maksimum eleman. Şimdi dizinin sıralanmamış kısmını (ilk elemandan sondan bir önceki elemana) tekrar atlıyoruz ve yol boyunca sıralanmamış komşuları değiştiriyoruz. İkinci en büyük eleman sondan bir önceki yerde olacaktır. Aynı ruhla devam ederek, dizinin sürekli azalan sıralanmamış kısmını atlayarak bulunan maksimumları sonuna kadar zorlayacağız.
 
Kaynak

Bu algoritmanın algoritmik uygulaması
J=1 İLE N-1 İÇİN DÖNGÜ ADIM 1
   F=0
   I=1 İLE N-J-1 İÇİN DÖNGÜ ADIM 1
     IF A[I] > A[I+1] SONRA
       DEĞİŞİM A[I],A[I+1]
       K=1
   SONRAKİ ben
   IF F=0 THEN EXIT THE LOOP // geçiş sırasında herhangi bir değişim olmadıysa,
  // bu, tüm öğeler anlamına gelir
  //sırayla düzenlenmiş
 SONRAKİ J
Bu algoritmanın karmaşıklığı: \(\displaystyle O(n^{2})\).


Ek yararlı bilgiler: Wikipedia makalesi.

 

Problem

"kabarcık" yöntemi kullanılarak dizinin küçükten küçüğe doğru sıralanması gerekmektedir.
 
Giriş
İlk satır, 1000'i aşmayan bir doğal sayı N içerir – dizi boyutu. İkinci satırda N sayıları bulunur – dizi öğeleri (modulo'da 1000'i geçmeyen tamsayılar).
 
Çıktı
Sonuç dizisinin çıktısını alın.
 
Örnekler

# Girdi Çıktı
1
5
5 4 3 2 1
1 2 3 4 5