শেল সর্ট বাস্তবায়ন
যখন শেল সর্ট বাস্তবায়ন করতে হয়, তখন একটি ফাংশন সংজ্ঞায়িত করা হয় যা একটি তালিকা এবং তালিকার দৈর্ঘ্য আর্গুমেন্ট হিসেবে নেয়। এই তালিকাটি একটি নির্দিষ্ট সংখ্যক উপাদান পর্যন্ত সর্ট করা হয়, যেখানে উপাদানগুলির সংখ্যাটি সর্বোচ্চ মান। এটি तबতক চলে যতক্ষণ না উপাদানগুলির সংখ্যাটি ন্যূনতম মানে আসে।
এটি তালিকার সাব-তালিকাগুলোর সবার জন্য করা হয় এবং সমস্ত সাব-তালিকাগুলো সর্ট করা হয়।
একটি তালিকা নানা ধরনের মান সংরক্ষণ করতে পারে (যেমন পূর্ণসংখ্যা, ফ্লোটিং পয়েন্ট, স্ট্রিং ইত্যাদি)।
উদাহরণ
def shell_sort(my_list, list_len):
interval = list_len // 2
while interval > 0:
for i in range(interval, list_len):
temp = my_list[i]
j = i
while j >= interval and my_list[j - interval] > temp:
my_list[j] = my_list[j - interval]
j -= interval
my_list[j] = temp
interval //= 2
my_list = [45, 31, 62, 12, 89, 5, 9, 8]
list_len = len(my_list)
print("সর্ট করার আগের তালিকা:")
print(my_list)
shell_sort(my_list, list_len)
print("\nশেল সর্ট সম্পাদনের পরের তালিকা:")
print(my_list)
আউটপুট
সর্ট করার আগের তালিকা: [45, 31, 62, 12, 89, 5, 9, 8] শেল সর্ট সম্পাদনের পরের তালিকা: [5, 8, 9, 12, 31, 45, 62, 89]
ব্যাখ্যা
- 'shell_sort' নামক একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা তালিকা এবং তালিকার দৈর্ঘ্য আর্গুমেন্ট হিসেবে নেয়।
- 'interval' ভেরিয়েবল '//' বিটওয়াইজ অপারেটর ব্যবহার করে সংজ্ঞায়িত করা হয়েছে।
- এটি ফ্লোর ডিভিশন সম্পাদন করে।
- এটি মানটি নিকটতম পূর্ণসংখ্যায় রাউন্ড ডাউন করে।
- তালিকাটি ইটারেট করা হয় এবং একটি টেম্পোরারি ভেরিয়েবল তৈরি করা হয়।
- 'interval' ভেরিয়েবল তালিকার প্রতিটি ইনডেক্সের সাথে তুলনা করা হয় এবং তালিকার প্রতিটি উপাদান টেম্পোরারি ভেরিয়েবলের সাথে তুলনা করা হয়।
- 'interval' ভেরিয়েবল আবার ফ্লোর ডিভিশন করার জন্য ব্যবহার করা হয়।
- তালিকা সংজ্ঞায়িত করা হয়েছে এবং কনসোলে প্রদর্শিত হয়েছে।
- মেথডটি এই তালিকা এবং এর দৈর্ঘ্য পাস করে কল করা হয়েছে।
- আউটপুট কনসোলে প্রদর্শিত হয়েছে।