Birleştirme Sıralaması için Python Programı

Yayınlanan: 2023-01-31

Yapılandırılmış, nesne yönelimli tasarım yaklaşımı ve basit ve düzenli sözdizimi ve dilbilgisi ile çok paradigmalı bir programlama dili olarak Python, değişen karmaşıklık ve ölçekteki projeler üzerinde çalışan programcılar için tercih edilen dil olarak hızla ortaya çıkıyor.

Python, kullanıcılarının görevlerini kendi başlarına gerçekleştirmelerine yardımcı olabilecek veya daha büyük, daha karmaşık bir hedefe ulaşma yolunda bir adım olarak hizmet edebilecek çeşitli işlemleri gerçekleştirmelerine izin veren, önceden oluşturulmuş algoritmalardan oluşan modüler bir kitaplık sağlar. Bu tür algoritmaların en popülerlerinden biri, Birleştirerek Sıralama işlevselliğini etkinleştiren algoritmadır.

İçindekiler

Birleştirme Sıralaması nedir?

Kullanıcıların herhangi bir türde ve herhangi bir kaynaktan rastgele bir veri kümesi almasına olanak tanıyan ve bunu en sonunda bireysel bileşenlerine ayrılana kadar tekrarlayan aşamalara bölen genel amaçlı bir sıralama tekniğidir - yinelemeli bir teknik, genellikle ' böl ve yönet' yöntemi.

Algoritma daha sonra ayrı ayrı bileşenleri - yine tekrar eden aşamalarda - bir araya getirir, ancak bunları, yol boyunca her aşamada, tüm veri serisi istenen mantıksal dizide yeniden oluşturulana kadar temel karşılaştırma ve takas yöntemini kullanarak önceden belirlenmiş, mantıksal bir dizi halinde sıralar. .

upGrad'daki diğer veri bilimi kurslarımıza göz atın.

Böl ve Yönet tekniği

Örneğin, alfabedeki harflerin rastgele bir veri kümesini ele alalım: N, H, V, B, Q, D, Z, R.

Adım 1 : Orijinal veri seti önce aşağıdaki gibi iki gruba ayrılır:

N, H, V, B Q, D, Z, R

Adım 2 : Ortaya çıkan her iki dizi de aşağıdaki gibi alt bölümlere ayrılır:

N, H V, B Q, D Z, R

3. Adım : Son olarak, tüm veri serisi kendi bileşenlerine bölünene kadar dört dizinin tamamı daha fazla tükürülür:

N H V B Q D Z R

İşlem daha sonra tersine döner ve bireysel veri noktaları şimdi aşamalı olarak birleştirilmeye başlar. Ancak bu birleştirme işlemi boyunca, her bir alt dizideki her öğe değerlendirilir ve aşağıdaki gibi mantıksal bir sırayla (alfabetik sırayla) sıralanmaları için değiştirilir:

Adım 4 : Tek tek öğeler, doğru sırayı oluşturmak için gerektiği gibi konumları değiştirirken çiftler halinde birleşir:

H, NB , V D, QR , Z

Adım 5 : Yinelemeli birleştirme ve sıralama işlemi bir sonraki yinelemeye devam eder:

B, H, N, VD , Q, R, Z

Adım 6 : Tüm veri serisi sonunda mantıksal alfabetik sırasına göre yeniden oluşturulur:

B, D, H, N, Q, R, V, Z

Popüler Veri Bilimi Kurslarımızı keşfedin

IIITB'den Veri Biliminde Yönetici Yüksek Lisans Programı İş Kararları Verme için Veri Biliminde Profesyonel Sertifika Programı Arizona Üniversitesi'nden Veri Biliminde Bilim Ustası
IIITB'den Veri Biliminde Gelişmiş Sertifika Programı Maryland Üniversitesi'nden Veri Bilimi ve İş Analitiği Alanında Profesyonel Sertifika Programı Veri Bilimi Kursları

Birleştirme Sıralama Uygulamaları

Python'da Merge Sort uygulamasına yönelik iki yaklaşım vardır. Yukarıdan aşağıya yaklaşım ve aşağıdan yukarıya yaklaşım.

Yukarıdan Aşağıya Yaklaşım:

Daha yaygın olarak kullanılan yukarıdan aşağıya yaklaşım, yukarıda açıklanan yaklaşımdır. Daha uzun sürer ve daha fazla bellek kullanır ve bu nedenle daha küçük veri kümeleriyle çalışırken verimsizdir. Ancak, özellikle büyük veri kümelerine uygulandığında çok daha güvenilirdir.

Popüler Veri Bilimi Makalelerimizi okuyun

Veri Bilimi Kariyer Yolu: Kapsamlı Bir Kariyer Rehberi Veri Bilimi Kariyer Gelişimi: İşin Geleceği burada Veri Bilimi Neden Önemli? Veri Biliminin İşletmeye Değer Getirmesinin 8 Yolu
Veri Biliminin Yöneticiler İçin Uygunluğu Her Veri Bilimcinin Sahip Olması Gereken Nihai Veri Bilimi Hile Sayfası Veri Bilimcisi Olmanız İçin En Önemli 6 Neden
Veri Bilimcisinin Hayatından Bir Gün: Ne yapıyorlar? Efsane Yıkıldı: Veri Biliminin Kodlamaya İhtiyacı Yok İş Zekası ve Veri Bilimi: Farklar nelerdir?

Giriş kodu:

def birleştirme_sort (inp_arr):

boyut = len(inp_arr)

boyut > 1 ise:

orta = boyut // 2

left_arr = inp_arr(:orta)

rIght_arr = inp_arr(orta :)

birleştirme_sıralama(sol_arr)

_sort(right_arr) birleştir

ben = 0

j = 0

k = 0

(Burada i ve j, sırasıyla veri serisinin sol ve sağ yarılarını geçmek için yineleyicilerdir ve k, genel veri serisinin yineleyicisidir).

left_size = len(left_arr)

sağ _size = len(sağ_arr)

i < left_size ve j < sağ boyut iken:

left_arr(i) < right_arr (j) ise:

inp_arr(k) – left_arr(i)

ben >= 1

Başka:

inp_arr(k) = sağ_arr (j)

j += 1

k += 1

ben < left_size iken:

inp_arr (k) = left_arr(i)

ben += 1

k += 1

j < sağ_boyut iken:

inp_arr (k) = sağ_arr(j)

j += 1

k += 1

inp_arr = (N, H, V, B, Q, D, Z, R)

print(:Giriş Dizisi:\n”)

yazdır(inp_arr)

birleştirme_sıralama (inp_arr)

print(“Sıralı Dizi:\n”)

yazdır (inp_arr)

Çıktı:

Giriş Dizisi: N, H, V, B, Q, D, Z, R

Çıkış Dizisi: B, D, H, N, Q, R, V, Z

Aşağıdan yukarıya yaklaşım:

Aşağıdan yukarıya yaklaşım daha hızlıdır, daha az bellek kullanır ve daha küçük veri kümeleriyle verimli bir şekilde çalışır, ancak büyük veri kümeleriyle çalışırken sorunlarla karşılaşabilir. Bu nedenle daha az sıklıkla kullanılır.

Giriş kodu:

def birleştirme(sol, sağ):

sonuç = [] x, y = 0, 0

aralıktaki k için(0, len(sol) + len(sağ)):

if i == len(sol): # if 1. yarının sonunda,

result.append(right[j]) # 2. yarının tüm değerlerini topla

j += 1

elif j == len(sağ): # 2. yarının sonundaysa,

result.append(left[x]) # 1. yarının tüm değerlerini topla

ben += 1

elif sağ[j] < sol[i]:

sonuç.append(sağ[j])

j += 1

Başka:

sonuç.append(sol[i])

ben += 1

dönüş sonucu

def birleştirme sıralaması(ar_list):

uzunluk = len(ar_list)

boyut = 1

boyut < uzunluk iken:

size+=size #, açıklandığı gibi 2'de başlar

aralıktaki konum için(0, uzunluk, boyut):

başlangıç ​​\u200b\u200bkonumu

orta = konum + int(boyut / 2)

bitiş = konum + boyut

sol = ar_list[ başlangıç ​​: orta ] sağ = ar_list[ orta : bitiş ]

ar_list[başlangıç:bitiş] = birleştirme(sol, sağ)

ar_list'e dönüş

ar_list = [N, H, V, B, Q, D, Z, R] print(mergesort(ar_list))

Çıktı:

Giriş dizisi: N, H, V, B, Q, D, Z, R

Çıkış dizisi: B, D, H, N, Q, R, V, Z

Daha karmaşık, gerçek hayattaki veri kümelerine uygulanan Merge Sort uygulaması

Yukarıdan aşağıya yaklaşımı Hindistan'daki rastgele dört arazi aracına uygulayalım:

Marka

Modeli

Rs Crore'daki showroom eski fiyatı

cip kavgacı 0,58
ford çabalamak 0,35
Jaguar Land Rover Range Rover Spor 2.42
mercedes benz G sınıfı 1.76

Giriş kodu:

sınıf Araba:

def __init__(kendisi, marka, model, fiyat):

self.marka = marka

self.model = model

self.fiyat = fiyat

tanım __str __(kendi):

return str.format("Marka: {}, Model: {}, Fiyat: {}", self.brand,

self.model, self.price)

def birleştirme(liste1, i, j, k, comp_fun):

sol_kopya = liste1[i:k + 1]

r_sublist = liste1[k+1:r+1]

left_copy_index = 0

j_sublist_index = 0

sorted_index = ben

left_copy_index < len(left_copy) ve j_sublist_index < iken

len(j_sublist):

eğer comp_fun(left_copy[left_copy_index], j_sublist[j_sublist_index]):

list1[sorted_index] = sol_kopya[left_copy_index]

left_copy_index = left_copy_index + 1

başka :

list1[sorted_index] = j_sublist[j_sublist_index]

j_sublist_index = j_sublist_index + 1

sorted_index = sortedindex + 1

left_copy_index < len(sol_kopya):

list1[sorted_index] = sol_kopya[left_copy_index]

left_copy_index = left_copy_index + 1

sorted_index = sortedindex + 1

j_sublist_index < len(j_sublist):

list1[sorted_index] = j_sublist[j_sublist_index]

j_sublist_index = j_sublist_index + 1

sorted_index = sortedindex + 1

def birleştirme_sort(liste1, i, j, comp_fun):

eğer i >= j ise:

dönüş

k = (i + j)//2

birleştirme_sort(liste1, i, k, comp_fun)

birleştirme_sort(liste1, k + 1, j, comp_fun)

birleştirme(liste1,i, j, k, comp_fun)

araba1 = Araba(“Jip”, “Kavgacı”, 0,58)

car2 = Car(“Ford”, “Giriş”, 0.35)

car3 = Araba(“Jaguar Land Rover”, “Range Rover Sport”, 1.76)

car4 = Car(“Mercedes Benz”, “G sınıfı”, 2.42)

liste1 = [araba1, araba2, araba3, araba4]

birleştirme_sort(liste1, 0, len(list1) -1, lambda carA, carB: carA.brand < carB.brand)

print (“Markaya göre sıralanmış otomobiller:”)

list1'deki araba için :

baskı (araba)

yazdır ()

birleştirme_sort(liste1, 0, len(list1) -1, lambda carA, carB: carA.price< carB.price)

print (“Fiyata göre sıralanmış arabalar:”)

list1'deki araba için :

baskı (araba)

Çıktı:

Markaya göre sıralanmış arabalar:

ford çabası

Jaguar Land Rover Range Rover Sport

arazi aracı

Mercedes Benz G sınıfı

Fiyata göre sıralanmış arabalar:

ford çabası

arazi aracı

Jaguar Land Rover Range Rover

Mercedes Benz G sınıfı

UpGrad'ın Maryland Üniversitesi'nden Veri Bilimi ve İş Analitiği alanında Profesyonel Sertifikası ile Python'un hem teorik hem de pratik yönlerini öğrenebilirsiniz. Bu kurs, Python'u sıfırdan öğrenmenize yardımcı olur. Programlama ve kodlama konusunda yeni olsanız bile, upGrad size programlamanın temellerini öğrenebilmeniz için iki haftalık bir hazırlık kursu sunacaktır. birden fazla endüstri projesi üzerinde çalışırken Python, SQL gibi çeşitli araçlar hakkında bilgi edineceksiniz.

Bu makaleyi paylaşmak istermisiniz?

Yazılım Geliştirme Kariyerinizi Hemen Planlayın!

Veri Bilimi ve İş Analitiği Alanında Profesyonel Sertifika Programına Başvurun