hızlı sıralama Python

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).

< /tr>
8

td>
45213

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:

2 13854
tbody>

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

12
485

Bu işlem, biz listemizi sıralayana kadar devam eder:

< td>
İlk Kez

guçlu>
12
4 85
İkinci Kez
< guçlu>1

85





587t?/
√úçuncu Zaman



8

Son dizimiz şuna benziyor:

1< /td>23458

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:

  1. Pivot √∂ƒüesini seçin
  2. Tum öğeleri pivotun sağındaki pivottan daha buyuk taşıyın
  3. 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.

  • Sonra, bir Python for d√∂ngusu kullanarak listedeki tum √∂ƒüeler arasƒ±nda dola≈üƒ±yoruz. pivota e≈üittir, pivotun soluna ta≈üƒ±nƒ±r. Aksi takdirde pivotun saƒüƒ±na gider.

    Python i≈ülevimiz yeni yuksek deƒüeri d√∂ndurur. Yeni yuksek deƒüer, madde + 1’e 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!"

    Venus, Rockbot’ta Yazƒ±lƒ±m Muhendisi

    < 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ƒ±.

    Sonra, fonksiyonumuz prepare() y√∂ntemini çaƒüƒ±rƒ±r. Bu, pivot için bir i≈üaretçi tanƒ±mlar ve √∂ƒüeleri doƒüru yerlerine ta≈üƒ±r.

    Fonksiyonumuz daha sonra iki kez quick_sort() y√∂ntemini çaƒüƒ±rƒ±r.ƒ∞lkinde, pivotun solundaki √∂ƒüelerde QuickSort çalƒ±≈ütƒ±rƒ±rƒ±z.ƒ∞kinci kez, √∂ƒüelerde QuickSort’u çalƒ±≈ütƒ±rƒ±rƒ±z. Bu nedenle, fonksiyonumuz kendini çaƒüƒ±rdƒ±ƒüƒ± için √∂zyinelemelidir.

    Bu, listedeki her öğe sıralanana kadar devam eder.

    Bir Ana Yöntem Yazma

    < 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.

    Sƒ±ralamak istediƒüimiz sayƒ±lar olarak "deƒüerleri‚" daha sonra du≈üuk sayƒ± olarak 0 iletiyoruz. "deƒüerlerin‚" eksi 1 uzunluƒüu belirttiƒüimiz yuksek deƒüerdir. Yuksek deƒüer, eksi 1 deƒüerlerinin uzunluƒüudur, çunku listedeki ilk √∂ƒüenin dizin numarasƒ± 0’dƒ±r.

    Programƒ±mƒ±zƒ± çalƒ±≈ütƒ±rmayƒ± deneyelim:

    Kodumuz sƒ±ralanmƒ±≈ü bir liste d√∂ndurur! Biz yaptƒ±k. Kendinizi biraz ≈üƒ±martƒ±n. QuickSort’u anlamak veya uygulamak kolay deƒüildir.

    Karmaşıklığa Genel Bakış

    Ortalama olarak, bu algoritma ≈üu anda çalƒ±≈üƒ±r: O(n* log n). Bu, pivot eleman en buyuk veya en kuçuk eleman olmadƒ±ƒüƒ±nda ve pivot eleman orta elemana yakƒ±n olmadƒ±ƒüƒ±nda olur.

    Hƒ±zlƒ± Sƒ±ralamanƒ±n en k√∂tu durumu vardƒ±r. O(n2)’nin pleksisitesi. Bu, pivot olarak seçilen √∂ƒüe en buyuk veya en kuçuk √∂ƒüe olduƒüunda olu≈üur. Bu durumda, pivot √∂ƒüe her zaman sƒ±ralanmƒ±≈ü bir dizinin sonunda olacaktƒ±r. Bu, bir dizi gereksiz alt dizi yaratacaktƒ±r.

    Bu algoritma için en iyi durum karma≈üƒ±klƒ±ƒüƒ± O(n* log n)’dir. Bu, pivot √∂ƒüe ortadaki √∂ƒüeye e≈üit veya ortadaki √∂ƒüeye yakƒ±n olduƒüunda gerçekle≈üir.

    Algoritma karma≈üƒ±klƒ±ƒüƒ± hakkƒ±nda daha fazla bilgi edinmek için Big O Notation.

    Sonuç

    Python QuickSorts, bir listeyi daha sonra sƒ±ralanacak olan daha kuçuk listelere b√∂lmek için √∂zyinelemeyi kullanƒ±r. Her liste bir pivot eleman etrafƒ±nda sƒ±ralanƒ±r. Pivottan daha buyuk olan √∂ƒüeler saƒüƒ±na ta≈üƒ±nƒ±r; daha kuçuk √∂ƒüeler pivotun soluna ta≈üƒ±nƒ±r.

    En iyi Python √∂ƒürenme kaynaklarƒ±, çevrimiçi kurslar ve kitaplar hakkƒ±nda rehberlik için kapsamlƒ± Python Nasƒ±l √ñƒürenilir kƒ±lavuzu.