এই আর্টিকেলে আমরা নিচের সমস্যা সমাধানের কথা শিখব।
সমস্যা: একটি অ্যারে দেওয়া আছে, আমাদের মার্জ সর্টের কনসেপ্ট ব্যবহার করে এটি সর্ট করতে হবে।
এখানে আমরা ম্যাক্সিমাম এলিমেন্টকে শেষে রাখি। এটি বারবার করা হয় যতক্ষণ না অ্যারেটি সর্টেড হয়।
চলুন নিচের ইমপ্লিমেন্টেশনে সমাধানটি পর্যবেক্ষণ করি।
উদাহরণ
# মার্জ ফাংশন
def merge(arr, l, m, r):
n1 = m - l + 1
n2 = r - m
# অ্যারে তৈরি
L = [0] * (n1)
R = [0] * (n2)
# ডেটা অ্যারেতে কপি
for i in range(0, n1):
L[i] = arr[l + i]
for j in range(0, n2):
R[j] = arr[m + 1 + j]
i = 0 # অ্যারের প্রথম ਹälfte
j = 0 # অ্যারের দ্বিতীয় হälfte
k = l # দুটি হälfte মার্জ
while i < n1 and j < n2:
if L[i] <= R[j]:
arr[k] = L[i]
i += 1
else:
arr[k] = R[j]
j += 1
k += 1
# বাম হälfteের বাকি এলিমেন্ট কপি
while i < n1:
arr[k] = L[i]
i += 1
k += 1
# ডান হälfteের বাকি এলিমেন্ট কপি
while j < n2:
arr[k] = R[j]
j += 1
k += 1
# সর্ট
def mergeSort(arr, l, r):
if l < r:
# গড় বের করা
m = (l + (r-1)) // 2
# সর্ট
mergeSort(arr, l, m)
mergeSort(arr, m+1, r)
merge(arr, l, m, r)
# মেইন
arr = [2, 5, 3, 8, 6, 5, 4, 7]
n = len(arr)
mergeSort(arr, 0, n-1)
print("Sorted array is")
for i in range(n):
print(arr[i], end=" ")
আউটপুট
Sorted array is 2 3 4 5 5 6 7 8

সभी ভেরিয়েবল লোকাল স্কোপে ঘোষণা করা হয়েছে এবং তাদের রেফারেন্স উপরের চিত্রে দেখা যাচ্ছে।
উপসংহার
এই আর্টিকেলে আমরা শিখেছি কিভাবে মার্জ সর্টের পাইথন প্রোগ্রাম লিখতে হয়।