Birleştirme Sıralaması için Python Programı
Yayınlanan: 2023-01-31Yapı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.