kabarcık sıralama Python

Python işlevleri ve meth

Python balon sıralama bir listeden geçer ve öğeleri yan yana karşılaştırır. Sağdaki bir öğe soldaki birden büyükse, öğeler değiştirilir. Bu, liste sıralanana kadar gerçekleşir.

Bir listeyi sıralamanız mı gerekiyor? Balon sıralama arkanı kolladı. Kabarcık sıralama, listeleri sıralayan bir tür standart algoritmadır. Belki de oradaki en basit sıralamadır, bu nedenle sıralama algoritmalarında yeni olan yeni başlayanlar için mükemmeldir! 

Bu kılavuzda, balon sıralamalarının nasıl çalıştığını ve bir Python baloncuk sıralama algoritmasını nasıl uygulayabileceğinizi tartışacağız. Balon sıralamanın her bir bölümünün nasıl çalıştığını anlamanız için bir örnek üzerinden gideceğiz.




Python Kabarcık Sıralamaları

Bir baloncuk sıralama, bitişik öğe çiftlerini karşılaştırır ve eğer varsa bu öğeleri değiştirir. düzende değiller. Sıralanmamış sayıların listelerini sıralamak için Python'da yaygın olarak uygulanır. Kabarcık sıralamaları, standart bir bilgisayar bilimi algoritmasıdır.

Bir baloncuk sıralama kullanarak, verileri artan veya azalan düzende sıralayabilirsiniz. Listedeki ilk öğeden başlayarak, bir balon sıralama birinci ve ikinci öğeleri karşılaştıracaktır. İlk eleman ikinciden büyükse, bir takas gerçekleşir. 

Bu işlem, listedeki her öğe kontrol edilene kadar tekrarlanır. Ardından, bir baloncuk sıralaması listede tekrar dolaşacaktır. Bu, daha fazla takas yapılması gerekmeyene kadar gerçekleşir.




Python'da Ne Zaman Kabarcık Sıralaması Kullanmalısınız?

Kabarcık sıralama, yeni başladığınızda kullanmak için iyi bir sıralama yöntemidir. sıralama algoritmalarını öğrenmek. Balon sıralama, sırayla görünmeyen öğelerin listesini sıralamanın basit bir yoludur. 

Kabarcık sıralamaları, yalnızca birkaç nesne içeren bir listeniz olduğunda en iyi sonucu verir. Bunun nedeni, bir balon sıralamanın yalnızca birkaç karşılaştırma yapması gerektiğinde, çok hızlı olmasıdır. Daha büyük bir listeyi sıralamanız gerektiğinde, kullanabileceğiniz daha verimli algoritmalar vardır. Geliştiricilerin çoğu, daha uzun bir öğe listesini sıralamak için eklemeli sıralama gibi bir yöntem kullanmayı tercih ederdi.

Katılımcıların %81'i, bir eğitim kampına katıldıktan sonra teknik iş beklentileri konusunda daha emin hissettiklerini belirtti. Bugün bir eğitim kampı ile eşleştirin.

Ortalama bir eğitim kampı mezunu, bir eğitim kampına başlamaktan ilk işini bulmaya kadar, kariyer geçişinde altı aydan daha az zaman harcadı.

Hadi başlayalım. yabani otlar ve bir baloncuk sıralamanın nasıl çalıştığını gözden geçirmeye başlayın. Öğeleri yanlış sırada görünen aşağıdaki listeyle başlayacağız:


719< /td>412

Kabarcık sıralamamız, listemizdeki birinci ve ikinci öğeleri karşılaştırarak başlar. ilk eleman ikinciden büyükse, o zaman bu iki elemanı değiştiriyoruz.

Bu örnekte, 7 ile 19'u karşılaştıracağız. 7, 19'dan büyük değil, yani aynı yerde kalıyor. . Listemiz artık öncekiyle aynı görünüyor:

7 19412

Şimdi ikinci ve üçüncü öğeleri karşılaştırmaya devam edeceğiz. 19, 4'ten büyük, bu da onları değiştirmemiz gerektiği anlamına geliyor. Listemiz şimdi şöyle görünüyor:

< tr>
 741912

Artık üçüncüsünü karşılaştırabiliriz. ve listemizdeki dördüncü öğeler. 19, 12'den büyüktür, bu nedenle iki sayıyı değiştiririz:

741219

Listenin Sonuna Ulaşmak

Listemiz şimdiden sıralı görünmeye başladı. Ancak listemizin sonuna geldik ve sıralanmadı. Neler oluyor? Kabarcık sıralamaları bir listede birden çok geçiş yapar, bu da listedeki her öğe sıralanana kadar çalışmaya devam ettikleri anlamına gelir. 

Kabarcık sıralamamız, liste sıralanana kadar yeniden en baştan başlayacaktır. Liste, değerleri baştan sıralamaya her başladığında geçiş diyoruz. Bu örnekte, balon sıralamamız 7'yi karşılaştıracak ve 4, 7, 4'ten büyüktür, bu nedenle öğeleri değiştiririz:

Algoritmamız 7 ve 12'yi karşılaştırır. Takas gerekmez, dolayısıyla devam edeceğiz. . 12 ve 19'u karşılaştırıyoruz. Yine takas gerekli değil. Artık listemizin sonuna geldiğimize göre, artık takas yapılmasına gerek olmadığı açık. 

Listemiz sıralandıktan sonra bile algoritmamızın devam ettiğini fark ettiniz mi? Bunun nedeni, bir balon sıralamanın, listedeki her öğeyi listedeki her öğe için karşılaştırana kadar öğeleri değiştirmeye devam etmesidir. Algoritmamız her takas gerçekleşene kadar durmayacak.




Bubble Sort Python Programı

Şimdiye kadar bir tabloda sayıları değiş tokuş ediyorduk. Listemizi sıralamayı başardığımız doğrudur, ancak bunu manuel olarak yapmak zorunda değiliz. Kabarcık sıralamaları sonuçta bir hesaplama algoritmasıdır; algoritmayı bizim için çalıştıracak bir bilgisayar alalım.


Sayıların listesini artan düzende sıralayan bir Python işlevi yazarak başlayalım:

def sortList(dizi): aralıktaki öğe için(len(dizi)): j in aralık (0, (len(dizi) için) ) - öğe - 1)): if dizi[j] > dizi[j + 1]: (dizi[j], dizi[j + 1]) = (dizi[j + 1], dizi[j])

Algoritmamız bir for döngüsüyle başlar. Bu döngü dizimizdeki her öğeyi yineler. Ardından dizimizdeki tüm öğeleri birbiriyle karşılaştırmak için başka bir for döngüsü kullanırız.

Kodumuzda, belirli bir öğenin aşağıdaki öğeden daha büyük olup olmadığını kontrol eden bir Python “if” ifadesi tanımladık. Bu “if” ifadesi aşağıdaki gibi karşılaştırmalar yapacaktır:

  • t'deki ilk öğe mi liste ikinciden büyük mü?
  • Listedeki ikinci öğe üçüncüden büyük mü?

Kodumuz henüz tamamlanmadı. Yukarıdaki Python programını çalıştırmayı denerseniz hiçbir şey olmaz. Fonksiyonumuzu çağırıp ona bazı veriler vermeliyiz:

numbers = [7, 19, 4 , 12] sortList(numbers) print("Sıralı liste:", sayılar) 

Kodumuz şunu döndürür:

Sırasıyla listeleyin: [4, 7, 12, 19]

Başardık! Python dizimiz artan düzende sıralanmıştır! Bir listeyi azalan düzende sıralamak için bir kabarcık sıralama kullanabilirsiniz. Bunu yapmak için Python “if” deyim:

if array[j] < dizi[j + 1]: 

Programımızı bu revize edilmiş kod satırıyla çalıştırdığımızda, aşağıdaki döndürülür:

Sırasıyla listeleyin: [19, 12, 7, 4]



Kabarcık Sıralamasını Optimize Etme

Daha önce listemiz sıralanmış olsa bile her türlü karşılaştırmanın nasıl yapıldığını konuştuk. Bu, balon sıralamamızı oldukça verimsiz hale getirir: liste sıralandıktan sonra bile devam eder. 

"Python.Engineering hayatıma en ihtiyacım olduğu anda girdi ve hızlı bir şekilde bir bootcamp ile eşleşmeme yardımcı oldu. Mezun olduktan iki ay sonra, hayattaki değerlerim ve hedeflerim ile uyumlu hayalimdeki işi buldum!"

p>

Venus, Rockbot'ta Yazılım Mühendisi

Bu örnekte büyük bir fark yaratmasa da, büyük ölçekte bu, yürütme süresini etkileyebilir bir programın. Optimize edilmiş baloncuk sıralamasının devreye girdiği yer burasıdır.

Yeni bir değişken yazarak baloncuk sıralamamızı optimize edebiliriz. Buna takas diyelim. Bu değişken, herhangi bir takasın bir Python for loop. Bu değişken false olarak ayarlanırsa listemiz sıralanmış demektir. Daha fazla yineleme yapılmasına gerek yok. 

SortList işlevimizi öncekinden revize edelim:

def sortList(dizi): aralıktaki öğe için(len(dizi)): takas = aralıkta j için doğru (0, (len(dizi) - öğe - 1)): if dizi[j] > dizi [j + 1]: (dizi[j], dizi[j + 1]) = (dizi[j + 1], dizi[j]) takas = False if takas == True: break

Varsayılan değere sahip olan swap adında bir değişken tanımladık: True. listeden her geçişte gerçekleşti. Eğer dizimiz bir karşılaştırma yaparsa, swap değeri False olarak ayarlanır.

Son takasta yapılan takas yoksa, o zaman dizi zaten sıralanmıştır. Listemiz daha sonra swap'in True'ya eşit olup olmadığını kontrol edecektir. s, programımız çalışmayı durduracak. 

Kodumuzu tekrar çalıştıralım:

 Sırayla listeleyin: [4, 7, 12, 19]

Verilerimiz aynı şekilde sıralandı ancak algoritmamız artık daha hızlı ve daha verimli. Algoritmamız artık listedeki tüm öğeler sıralanır sıralanmaz durur.




Karmaşıklık Analizi

Kabarcık sıralamanın ortalama zaman karmaşıklığı O(n^2)'dir. Bu, bir dizideki öğeler sıralanmadığında olur.

En kötü durumda, O(n^2)'de bir baloncuk sıralama gerçekleştirilir. Bu, bir dizi zaten artan veya azalan düzende olduğunda ve bunun tersi şekilde sıralanması gerektiğinde gerçekleşir. En iyi durumda, bu algoritma O(n)'de çalışacaktır. Bu, bir dizi zaten sıralanmışsa gerçekleşir.

Algoritma karmaşıklığı hakkında daha fazla bilgi edinmek için Python.Engineering Big O Notation kılavuzumuza

göz atın. a>.




Sonuç

Kabarcık sıralamaları, bir veri listesini sıralamanız için basit bir yol sağlar. Verileri artan veya azalan düzende sıralamak için kullanılabilirler. 

Bu algoritma en çok küçük bir listeyi sıralamanız gerektiğinde kullanılır. Kabarcık sıralamaları, sıralama algoritmalarına iyi bir giriş niteliğindedir. Eklemeli sıralama gibi daha gelişmiş sıralama yöntemleri hakkında bilgi edinmeden önce algoritmaları tanımanıza yardımcı olması için bunları kullanabilirsiniz.

Python kaynakları ve kursları hakkında uzman rehberliği için Python Nasıl Öğrenilir kılavuzu.





kabarcık sıralama Python: StackOverflow Questions

Tutorials