जावा इंसर्शन सॉर्ट सूची में प्रत्येक आइटम का मूल्यांकन करता है। यदि कोई आइटम पहले वाले से कम है, तो सॉर्ट आइटम को स्वैप करता है। अन्यथा, आइटम एक ही स्थान पर रहते हैं और सूची में अगले दो आइटम की तुलना की जाती है।
वस्तुओं की सूची को छाँटने में कंप्यूटर अच्छे हैं। लूप का उपयोग करके, आप किसी सूची में सभी आइटमों को खोज सकते हैं और उनका क्रम तब तक बदल सकते हैं जब तक कि वे एक निश्चित तरीके से दिखाई न दें।
प्रोग्रामिंग में, सूचियों को छांटने के कुछ मानक तरीके हैं। हम इन सॉर्ट एल्गोरिदम को कहते हैं। एल्गोरिदम को एक सूची में सभी मदों के माध्यम से पढ़ा जाता है और निर्देशों के एक विशेष सेट का उपयोग करके उन्हें क्रमबद्ध करता है। आपके सामने आने वाले सबसे आम सॉर्ट एल्गोरिथम में से एक इंसर्शन सॉर्ट है।
इस गाइड में, हम चर्चा करने जा रहे हैं कि जावा इंसर्शन सॉर्ट एल्गोरिथम को कैसे लागू किया जाए। हम रास्ते में एक उदाहरण के माध्यम से चलेंगे ताकि आप सीख सकें कि इस प्रकार के पीछे का तर्क कैसे काम करता है।
आइए शुरू करें!
जावा इंसर्शन सॉर्ट क्या है?
जावा इंसर्शन सॉर्ट कार्ड गेम में आपके हाथ में कार्ड सॉर्ट करने के समान काम करता है। सम्मिलन प्रकार सूची में प्रत्येक आइटम की जांच करते हैं और उन्हें एक आइटम के साथ बाईं ओर स्वैप करते हैं। किसी आइटम की अदला-बदली की जाती है या नहीं, यह इस बात पर निर्भर करता है कि आइटम पिछले आइटम से बड़ा है या कम।
एक पल के लिए कल्पना कीजिए कि आप एक ताश का खेल खेल रहे हैं - सीटी, रम्मी, जो भी हो। जब आप अपने कार्ड छांट रहे हों, तो आप क्या करते हैं?
आप बाईं ओर से शुरू करेंगे और जांचेंगे कि दूसरा कार्ड सॉर्ट किया गया है या नहीं। यदि वह कार्ड पिछले से बड़ा है, तो उसे उसी स्थिति में रहना चाहिए। ओह, इसे सूची में एक स्थान ऊपर ले जाना चाहिए।
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
आप अपने हाथ में प्रत्येक कार्ड के माध्यम से जाएंगे और इस ऑपरेशन को तब तक करेंगे जब तक कि प्रत्येक कार्ड अपने सही क्रम में दिखाई न दे।
आपको इंसर्शन सॉर्ट का उपयोग कब करना चाहिए?
सम्मिलन प्रकार का सबसे अधिक उपयोग तब किया जाता है जब बाईं ओर केवल कुछ तत्व होते हैं जिन्हें क्रमबद्ध करने की आवश्यकता होती है।
अधिक कुशल एल्गोरिदम हैं जिनका उपयोग आप डेटा की बड़ी सूचियों को सॉर्ट करने के लिए कर सकते हैं, जैसे कि मर्ज सॉर्ट। यही कारण है कि आपको हमेशा सम्मिलन प्रकार का उपयोग करने के लिए डिफ़ॉल्ट नहीं होना चाहिए। इसके साथ ही, सूची में तत्वों को छांटने में बबल प्रकार और चयन प्रकार की तुलना में सम्मिलन प्रकार अधिक कुशल होते हैं।
इंसर्शन सॉर्ट एक सरल सॉर्टिंग एल्गोरिथम है जिसका अर्थ है कि शुरुआती लोगों के लिए सीखना अच्छा है।
सम्मिलन क्रमित पूर्वाभ्यास
कार्ड के डेक की कल्पना करना दुनिया में सबसे सहज नहीं है। आइए आपको आरंभ करने के लिए एक प्रोग्रामिंग उदाहरण के माध्यम से चलते हैं। निम्नलिखित सूची पर विचार करें:
8 | 6 | 3 | 9 |
इस सूची में, हम मानते हैं कि पहला तत्व क्रमबद्ध है।
हमारा अगला कदम हमारी सूची में दूसरे आइटम की तुलना पहले वाले से करना है। यदि पहला आइटम दूसरे आइटम से बड़ा है, तो उस आइटम को पहले आइटम के सामने रखा जाता है।
इस मामले में, 6, 8 से बड़ा है। इसका मतलब है कि 6 हमारी सूची में एक स्थान से पीछे हटेंगे, और 8 एक स्थान से आगे बढ़ेंगे:
6 | 8 | 3 | 9 |
अब हमें तीसरे तत्व की तुलना उसके बाईं ओर के तत्वों से करने की आवश्यकता है:क्या 3 8 से बड़ा है? नहीं, तो 8 स्थिति को दाईं ओर ले जाते हैं:
6 | 3 | 8 | 9 |
क्या 3 6 से बड़ा है? नहीं, इसलिए हम संख्या 6 को आगे बढ़ाते हैं:
3 | 6 | 8 | 9 |
अब, हमें तुलना करनी है कि हमारी सूची में चौथा आइटम - अंतिम आइटम - हमारी सूची में हर दूसरे आइटम से बड़ा है या नहीं। इस मामले में, 9 उसके सामने आने वाली सभी वस्तुओं से बड़ा है:8, 6, और 3।
यहां वह एल्गोरिथम है जिसका उपयोग हमने अपनी सूची को क्रमबद्ध करने के लिए किया है:
- पहला तत्व क्रमबद्ध है।
- दूसरे आइटम की तुलना उसके बाईं ओर के आइटम से करें।
- यदि यह आइटम इसके बाईं ओर के मान से अधिक है, तो आइटम उसी स्थान पर रहता है। अन्यथा, हम मान को बाईं ओर ले जाते हैं।
- जब तक सभी आइटम क्रम में दिखाई न दें तब तक दोहराएं।
अब हमारे पास एक क्रमबद्ध सरणी है। सम्मिलन एक समय में एक आइटम के माध्यम से क्रमबद्ध करता है। आइए चर्चा करें कि जावा में इस सॉर्टिंग एल्गोरिथम को कैसे लागू किया जाए।
जावा में इंसर्शन सॉर्ट कैसे करें
तुलना किए जा रहे दो मानों का उच्चतम मान हर बार सॉर्ट फ़ंक्शन चलाने पर दाईं ओर एक स्थान डाला जाता है।
सैद्धांतिक रूप से इसके बारे में सब कुछ अच्छी तरह से बात कर रहा है, लेकिन आप इसे जावा में कैसे कार्यान्वित करते हैं? यह एक अच्छा सवाल है। आइए एक ऐसा वर्ग लिखें जो छात्र ग्रेड की सूची में एक प्रविष्टि क्रम करता है।
एरेज़ लाइब्रेरी तैयार करें
आइए अपने जावा प्रोग्राम में Arrays लाइब्रेरी को आयात करके शुरू करें। एक बार सॉर्ट करने के बाद हम अपनी सूची को कंसोल पर प्रिंट करने के लिए इस लाइब्रेरी का उपयोग करेंगे:
import java.util.Arrays;
एक क्रमबद्ध विधि घोषित करें
हम एक ऐसी विधि की घोषणा करके शुरू करेंगे जो हमारी सूची के माध्यम से जाती है और हमारे डेटा को आरोही क्रम में क्रमबद्ध करती है :
class SortGrades { public static void insertionSort(int [] numbersToSort) { int itemCount = numbersToSort.length; for (int value = 1; value < itemCount; value++) { int key = numbersToSort[value]; int last = value - 1; while (last >= 0 && key < numbersToSort[last]) { numbersToSort[last + 1] = numbersToSort[last]; --last; } numbersToSort[last + 1] = key; } } }
हम यह पता लगाकर शुरू करते हैं कि हमारे इनपुट ऐरे में कितने आइटम हैं। यह हमें एक लूप बनाने की अनुमति देता है जो हमारी सूची में प्रत्येक आइटम के माध्यम से जाता है। हम लूप के लिए इनिशियलाइज़ करते हैं जो तब तक लूप करता है जब तक हम अपनी सूची को सॉर्ट नहीं करते।
हमारे लूप के भीतर, हमने दो चर घोषित किए हैं:कुंजी और अंतिम।
"कुंजी" जावा चर ट्रैक करता है कि हम वर्तमान में किस आइटम को सॉर्ट कर रहे हैं। "अंतिम" चर ट्रैक करता है कि आइटम के बाईं ओर कितने आइटम सॉर्ट किए जाने हैं।
हमारा प्रोग्राम "कुंजी" के मान की तुलना बाईं ओर के प्रत्येक तत्व से करेगा, जब तक कि हमें एक छोटा तत्व नहीं मिल जाता। यह हमारे जावा "जबकि" लूप में होता है।
मुख्य कार्य परिभाषित करें
जब हम इस कोड को चलाते हैं, कुछ नहीं होता है। ऐसा इसलिए है क्योंकि हमने अभी तक अपने मुख्य कार्य को परिभाषित नहीं किया है। आइए एक मुख्य फ़ंक्शन को परिभाषित करें जो एक इंट ऐरे (संख्याओं की एक सरणी) को परिभाषित करता है। यह मुख्य कार्य सम्मिलन सॉर्ट () . का उपयोग करता है फ़ंक्शन हमने उन नंबरों को सॉर्ट करने की घोषणा की है। अपनी प्रविष्टि घोषित करने के बाद इस कोड में पेस्ट करें जावा विधि को क्रमबद्ध करें:
public static void main(String args[]) { int[] numbers = { 8, 6, 3, 9 }; InsertionSort sortNumbers = new InsertionSort(); sortNumbers.insertionSort(numbers); String arrayToString = Arrays.toString(numbers); System.out.println("Sorted list: " + arrayToString); }
हमारी मुख्य विधि में, हमने उन संख्याओं की एक सूची घोषित की है जिन्हें हम क्रमबद्ध करना चाहते हैं। हमने अपने InsertionSort() . का एक उदाहरण बनाया है सॉर्टनंबर . नामक विधि . हम अपनी संख्याओं की सूची को आरोही क्रम में क्रमबद्ध करने के लिए इस पद्धति का उपयोग करते हैं। यह विधि हमारे "नंबर" सरणी के अंदर के मानों को बदल देती है; हमने इसके मूल्यों को संग्रहीत करने के लिए एक अलग सरणी घोषित नहीं की है।
इसके बाद, हमने Arrays.toString() . का उपयोग किया है हमारी संख्या सरणी को एक स्ट्रिंग में बदलने की विधि। हम सॉर्ट की गई सूची को कंसोल पर प्रिंट करते हैं।
जटिलता समीक्षा
सम्मिलन क्रम में ओ (एन ^ 2) की औसत केस जटिलता है। ऐसा तब होता है जब नो एलीमेंट को सॉर्ट किया जाता है।
सबसे अच्छा मामला जटिलता तब होती है जब किसी सरणी को क्रमबद्ध किया जाता है। यह ओ (एन) की समय जटिलता उत्पन्न करेगा। ऐसा इसलिए है क्योंकि इंसर्शन सॉर्ट में इनर लूप इस मामले में बिल्कुल भी नहीं चलेगा।
सबसे खराब स्थिति में, एक सम्मिलन क्रम O(n^2) पर प्रदर्शन करता है। ऐसा तब होता है जब कोई सरणी आरोही या अवरोही क्रम में होती है और आप इसे विपरीत क्रम में क्रमबद्ध करना चाहते हैं (अर्थात आरोही से अवरोही)। इसमें प्रत्येक तत्व की अन्य सभी तत्वों से तुलना करना शामिल होगा।
निष्कर्ष
इंसर्शन सॉर्ट डेटा सॉर्ट करने का एक कुशल तरीका है। सम्मिलन प्रकार सूची में दूसरे से शुरू होने वाले मानों की तुलना करते हैं। यदि यह मान इसके बाईं ओर के मान से अधिक है, तो हमारी सूची नहीं बदलेगी। अन्यथा, मान तब तक ले जाया जाता है जब तक कि उसके बाईं ओर की वस्तु इससे कम न हो।
अब आप जावा में अपना इंसर्शन सॉर्ट एल्गोरिथम लिखना शुरू करने के लिए तैयार हैं! यदि आप अधिक जावा सीखने के संसाधनों की तलाश कर रहे हैं, तो हमारी जावा कैसे सीखें गाइड देखें।