hızlı sıralama Python
Python işlevleri ve meth
Michael Zippo
18.11.2021
Python QuickSort, bir pivot √∂ƒüe seçer ve bir dizinin √∂ƒüelerini iki yeni dizi< olarak b√∂ler em>s. √ñzetten daha yuksek sayƒ±lar bir dizi içine girer; pivottan daha du≈üuk sayƒ±lar diƒüerine gider. Her bir dizi sƒ±ralanƒ±r ve ardƒ±ndan tum diziler birle≈ütirilir.
Programlamada bir listeyi sƒ±ralamak için kullanabileceƒüiniz birçok sƒ±ralama algoritmasƒ± vardƒ±r. Python yerle≈ütirme sƒ±ralamalarƒ± var, balon çe≈üitleri ve daha fazlasƒ±. QuickSort, en yaygƒ±n turlerden biridir.
Bu kƒ±lavuzda QuickSort’larƒ±n ne olduƒüu ve nasƒ±l çalƒ±≈ütƒ±klarƒ± hakkƒ±nda konu≈üacaƒüƒ±z. Nasƒ±l uygulanacaƒüƒ±nƒ± √∂ƒürenebilmeniz için bir Python QuickSort √∂rneƒüini inceleyeceƒüiz.
Daha fazla uzatmadan başlayalım!
Python QuickSort nedir?
Python QuickSort algoritmasƒ±, bir diziyi alt dizilere b√∂ler. Bu algoritma, listedeki her bir √∂ƒüeyi sƒ±ralamak için bu alt dizileri √∂zyinelemeli olarak çaƒüƒ±rƒ±r. Bir alt dizinin içeriƒüi, yeni bir alt diziye ta≈üƒ±nmayan bir pivot √∂ƒüe tarafƒ±ndan belirlenir.
QuickSort algoritmasƒ± b√∂ler ve fetheder. Bu, bir listeyi sƒ±ralama g√∂revinin birkaç alt g√∂reve b√∂lunduƒüu anlamƒ±na gelir. Sƒ±ralamanƒ±n sonunda, bu alt g√∂revlerin sonuçlarƒ±, sƒ±ralanmƒ±≈ü bir liste d√∂ndurmek için bir araya gelir.
Bir Hƒ±zlƒ± Sƒ±ralamada, alt g√∂rev, her alt liste için bir pivot ayarlar ve √∂ƒüeleri, deƒüerlerine g√∂re sƒ±ralamaktƒ±r. pivot.
Python QuickSort’u Ne Zaman Kullanmalƒ±yƒ±m?
Zaman karma≈üƒ±klƒ±ƒüƒ± √∂nemli olduƒüunda QuickSort yararlƒ±dƒ±r. Bunun nedeni, QuickSort’un diƒüer algoritmalara g√∂re daha az bellek alanƒ± kullanmasƒ± ve bu da onlara verimlilik artƒ±≈üƒ± saƒülamasƒ±dƒ±r.
Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda kendilerini daha guvende hissettiklerini belirtti. Bugun 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ƒ±.
Yalnızca bir Hızlı Sıralama kullanmalısınız. Python özyineleme hakkında bilginiz varsa. Bunun nedeni, QuickSort algoritmasının özyinelemeli işlevlere bağlı olmasıdır.
Hƒ±zlƒ± Sƒ±ralama, daha kuçuk dizilerde birle≈ütirme sƒ±ralamasƒ±ndan daha verimlidir. Ancak, daha buyuk veri kumelerinde, araya ekleme sƒ±ralama veya birle≈ütirme sƒ±ralama daha hƒ±zlƒ± olabilir.
Bir QuickSort Nasıl Çalışır?
Bir QuickSort, pivot i≈ülevi g√∂recek bir √∂ƒüe seçer. Bu, bir listedeki herhangi bir √∂ƒüe olabilir. Bu eƒüitim için , listedeki son √∂ƒüeyi seçeceƒüiz (3).
Bir QuickSort, listedeki öğeler arasında döngu yaptığımızda, pivot değerini her sayıyla karşılaştırır. pivot; aksi takdirde, sayıyı pivottan önce taşırız:
3 deƒüeri listemizde a≈üaƒüƒ± kaydƒ±rƒ±ldƒ±. Tum √∂ƒüeler 3 m’den kuçuk soluna eƒüildi; uçten buyuk tum deƒüerler saƒüƒ±na ta≈üƒ±ndƒ±.
Python dizimiz iki yarıya bölunmuştur: pivottan buyuk öğeler ve öğeler bir pivottan daha az.
Bu sureç ba≈üladƒ±ƒüƒ±nda, iki yarƒ±nƒ±n her birinde yeni bir pivot ba≈ülar. Bu pivot ayrƒ± olarak ba≈ülar ve yukarƒ±dakiyle aynƒ± algoritmayƒ± kullanƒ±r. ƒ∞lk olarak, her listedeki son deƒüere e≈üit bir pivot deƒüeri belirleyeceƒüiz:
Ardƒ±ndan, pivottan buyuk tum deƒüerleri pivotun saƒüƒ±na ta≈üƒ±yacaƒüƒ±z. Pivottan daha kuçuk tum deƒüerleri sola ta≈üƒ±rƒ±z.
Pivot One |
|
| İkinci Özet |
|
|
1 | 2 |
| 4 | 8 | 5 |
Bu işlem, biz listemizi sıralayana kadar devam eder:
ƒ∞lk Kez guçlu> | 1 | 2 |
| 4 | 8 | 5 |
İkinci Kez |
| < guçlu>1 |
|
| 8 | 5 |
|
|
|
|
| 5 | 87t?/ |
√úçuncu Zaman |
|
|
|
| < td>
8 |
Son dizimiz şuna benziyor:
Python QuickSort Örneği
QuickSort’un iki i≈üleve ihtiyacƒ± vardƒ±r: bir pivot i≈ülevi ve bir QuickSort i≈ülevi.
Bölum işleviyle başlayalım. Bu, diziyi pivot öğesinin değerine göre bölumlendirir veya hazırlar.
Bölum işlevimiz:
- Pivot √∂ƒüesini seçin
- Tum öğeleri pivotun sağındaki pivottan daha buyuk taşıyın
- Tum √∂ƒüeleri pivotun solundaki pivottan daha kuçuk ta≈üƒ±yƒ±n
QuickSort Python Programı
Bu algoritmayı uygulayan bir program yazalım:
√ñnce bir pivot eleman seçiyoruz. Bu, listemizdeki en yuksek sayƒ±ya e≈üittir.
Ardƒ±ndan, algoritmamƒ±zƒ± çalƒ±≈ütƒ±rmamƒ±z gerekir. Bunu ayrƒ± bir fonksiyon yazarak yapabiliriz:
"Python.Engineering hayatƒ±ma en çok 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 hedeflerime uygun hayalimdeki i≈üi buldum!"
< p>Bu fonksiyon, "low‚" deƒüerinin "high‚" deƒüerinden kuçuk olup olmadƒ±ƒüƒ±nƒ± kontrol eder. Eƒüer √∂yleyse sƒ±ralamamƒ±z devam edebilir. Aksi takdirde sƒ±ralamamƒ±z durur. Eƒüer sƒ±ralamamƒ±z durursa, elimizde var demektir. listeyi sƒ±raladƒ±.
Bu, listedeki her öğe sıralanana kadar devam eder.
< p>Bunun için bir liste tanƒ±mlayan bir ana program yazalƒ±m. rt:
√ñnce sƒ±ralanacak deƒüerlerin bir listesini belirliyoruz. Deƒüer listemizin uzunluƒüunu hesaplamak için Python len() y√∂ntemini kullanƒ±yoruz. Ardƒ±ndan, quick_sort() y√∂ntemini çaƒüƒ±rƒ±rƒ±z.