এই আর্টিকেলে আমরা নিচের সমস্যা সমাধানের কথা শিখব।
সমস্যা: একটি লিস্ট দেওয়া আছে, আমাদের দেয়া লিস্টে বিটোনিক সর্ট পারফর্ম করতে হবে এবং লিস্ট ডিসপ্লে করতে হবে।
ককটেইল সর্ট: এখানে সর্ট হয় বাবল সর্টের মতো যেখানে ইটেরেশন উভয় দিকেই হয়।
অ্যালগরিদম
প্রথমে অ্যারে বাম থেকে ডান ট্রাভার্স করা হয়। ট্রাভার্সালের সময়, এডজাসেন্ট আইটেম কম্পেয়ার করা হয় এবং কন্ডিশন বেসিসে ভ্যালু সওয়াপ করা হয়। এর ফলে সবচেয়ে বড় নম্বর অ্যারের শেষে চলে আসে।
এখন অ্যারে বিপরীত দিক থেকে ট্রাভার্স করা হয় এবং কন্ডিশন বেসিসে এলিমেন্ট সওয়াপ করা হয়। এর ফলে সবচেয়ে ছোট নম্বর শুরুতে চলে আসে।
চলুন নিচের ইমপ্লিমেন্টেশনে সমাধানটি পর্যবেক্ষণ করি।
উদাহরণ
# ফাংশন
def cocktailSort(a):
n = len(a)
flag = True
start = 0
end = n-1
while (flag == True):
# পिछলা ইটেরেশনের ফলাফল উপেক্ষা
flag = False
# বাম থেকে ডান ট্রাভার্সাল
for i in range(start, end):
if (a[i] > a[i+1]):
a[i], a[i+1] = a[i+1], a[i]
flag = True
# যদি কোনো সওয়াপ না হয় তবে অ্যারে সর্টেড
if (flag == False):
break
# অন্যথায়, ফ্ল্যাগ রিসেট
flag = False
# লাস্ট আইটেম ইতিমধ্যে সর্টেড
end = end - 1
# ডান থেকে বাম ইটেরেশন
for i in range(end-1, start-1, -1):
if (a[i] > a[i+1]):
a[i], a[i+1] = a[i+1], a[i]
flag = True
# ফার্স্ট এলিমেন্ট ইতিমধ্যে সর্টেড
start = start + 1
# মেইন
a = [2, 5, 4, 3, 8, 3, 4, 6]
cocktailSort(a)
print("Sorted array is:")
for i in range(len(a)):
print(a[i], end=" ")
আউটপুট
Sorted array is: 2 3 3 4 4 5 6 8

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