এই আর্টিকেলে আমরা নিচের সমস্যা সমাধানের কথা শিখব।
সমস্যা: একটি অ্যারে দেওয়া আছে, আমাদের হিপসর্টের কনসেপ্ট ব্যবহার করে এটি সর্ট করতে হবে।
এখানে আমরা ম্যাক্সিমাম এলিমেন্টকে শেষে রাখি। এটি বারবার করা হয় যতক্ষণ না অ্যারেটি সর্টেড হয়।
চলুন নিচের ইমপ্লিমেন্টেশনে সমাধানটি পর্যবেক্ষণ করি।
উদাহরণ
# হিপিফাই
def heapify(arr, n, i):
largest = i # লার্জেস্ট ভ্যালু
l = 2 * i + 1 # লেফট
r = 2 * i + 2 # রাইট
# যদি লেফট চাইল্ড থাকে
if l < n and arr[i] < arr[l]:
largest = l
# যদি রাইট চাইল্ড থাকে
if r < n and arr[largest] < arr[r]:
largest = r
# রুট
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i] # সওয়াপ
# রুট.
heapify(arr, n, largest)
# সর্ট
def heapSort(arr):
n = len(arr)
# ম্যাক্সহিপ
for i in range(n, -1, -1):
heapify(arr, n, i)
# এলিমেন্ট এক্সট্রাকশন
for i in range(n-1, 0, -1):
arr[i], arr[0] = arr[0], arr[i] # সওয়াপ
heapify(arr, i, 0)
# মেইন
arr = [2, 5, 3, 8, 6, 5, 4, 7]
heapSort(arr)
n = len(arr)
print("Sorted array is")
for i in range(n):
print(arr[i], end=" ")
আউটপুট
Sorted array is 2 3 4 5 5 6 7 8

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