जब शेल सॉर्ट लागू करने की आवश्यकता होती है, तो एक फ़ंक्शन परिभाषित किया जाता है, और यह एक सूची और सूची की लंबाई को आर्ग्युमेंट्स के रूप में लेता है। इस सूची को एक विशिष्ट संख्या में तत्वों तक क्रमबद्ध किया जाता है, जहां तत्वों की संख्या सबसे बड़ा मान होता है। यह तब तक किया जाता है जब तक तत्वों की संख्या का सबसे छोटा मान न हो जाए।
यह सूची में सभी सब-लिस्ट्स के लिए किया जाता है, और इन सभी सब-लिस्ट्स को क्रमबद्ध किया जाता है।
एक सूची का उपयोग विषम मानों को संग्रहीत करने के लिए किया जा सकता है (यानी किसी भी डेटा प्रकार का डेटा जैसे पूर्णांक, फ्लोटिंग पॉइंट, स्ट्रिंग्स, आदि)।
उदाहरण
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' वेरिएबल का उपयोग फिर से फ्लोर डिवीज़न करने के लिए किया जाता है।
- सूची परिभाषित की जाती है, और कंसोल पर प्रदर्शित की जाती है।
- इस सूची और इसकी लंबाई को पास करके मेथड को कॉल किया जाता है।
- आउटपुट कंसोल पर प्रदर्शित होता है।