Java selection sort सूची में सबसे छोटा आइटम ढूंढता है और उस मान को सूची की शुरुआत में ले जाता है। यह तब तक बार-बार होता है जब तक पहले सूची में हर तत्व सॉर्ट नहीं हो जाता। Selection sort सॉर्टेड सूची लौटाता है।
Java में सूची कैसे सॉर्ट करें? आपके पास कुछ विकल्प हैं। एक सामान्य विकल्प selection sort है।
इस गाइड में, हम बात करने जा रहे हैं कि selection sorts क्या हैं और वे कैसे काम करते हैं। हम Java में selection sort बनाने का तरीका भी देखेंगे ताकि आप जान सकें कि अपना खुद का कैसे बनाना है। आइए शुरू करें!
Java Selection Sort क्या है?
एक selection sort बार-बार सूची में न्यूनतम आइटम ढूंढता है और उसे सूची में अनसॉर्टेड आइटम्स की शुरुआत में ले जाता है। यह प्रक्रिया सूची में हर आइटम के लिए तब तक दोहराई जाती है जब तक सूची ऑर्डर नहीं हो जाती।
सूची में पहला आइटम सूची में सबसे छोटा आइटम माना जाता है। इस आइटम की तुलना अगले तत्व से की जाती है। यदि अगला तत्व छोटा है, तो तत्व स्वैप हो जाते हैं। यह एल्गोरिदम अंतिम तत्व तक पहुंचने तक न्यूनतम तत्व ढूंढता है। फिर, हमारा प्रोग्राम सबसे छोटे आइटम को सूची की शुरुआत में ले जाता है।
Selection sort में, एक सूची में दो भाग होते हैं: सॉर्टेड सूची और अनसॉर्टेड सूची। जैसे-जैसे तत्व सॉर्ट होते हैं, वे अनसॉर्टेड सबएरे से सॉर्टेड सबएरे में चले जाते हैं।
आप सूची को आरोही या अवरोही क्रम में ऑर्डर कर सकते हैं।
Selection Sort कब उपयोग करना चाहिए?
Selection sorts तब इष्टतम होते हैं जब आपको छोटी सूची सॉर्ट करने की आवश्यकता होती है। ऐसा इसलिए है क्योंकि बड़ी सूचियों को सॉर्ट करने के अधिक कुशल तरीके हैं। एल्गोरिदम, जैसे merge sort, insertion sort, और quick sort, Java प्रोग्रामिंग में selection sort से अधिक कुशल हैं।
Selection sort तब सबसे अच्छा प्रदर्शन करता है जब array के सभी तत्वों की जांच करना अनिवार्य हो। यह मामला होगा यदि सूची में कुछ या कोई आइटम सॉर्टेड नहीं हैं। Selection sorts आमतौर पर bubble sort से बेहतर प्रदर्शन करते हैं, जिसे समझना आसान है।
Selection Sorts कैसे काम करते हैं?
यह जाने बिना कि हम अपने एल्गोरिदम को क्या करना चाहते हैं, Java में एल्गोरिदम इम्प्लीमेंट करने का कोई उपयोग नहीं है। आइए उन चरणों के माध्यम से चलना शुरू करें जो selection sort सूची को क्रम में सॉर्ट करने के लिए लेता है।
निम्न अनसॉर्टेड array पर विचार करें:
| 17 | 14 | 9 | 12 |
Selection sorts सूची में पहले आइटम को सबसे छोटा सेट करते हैं। यह एक अस्थायी मान है जो हर बार हमारे प्रोग्राम द्वारा तुलना करने पर बदलता है। यह मान अपने स्वयं के वेरिएबल में स्टोर होता है।
| minimum = 17 | |||
| 17 | 14 | 9 | 12 |
"minimum" आइटम की तुलना दूसरे तत्व से की जाती है। यह तत्व array के अनसॉर्टेड भाग में है; सॉर्टेड तत्वों के बाद हर तत्व अनसॉर्टेड है।
मान लीजिए दूसरा तत्व "minimum" आइटम से छोटा है। इस मामले में, "minimum" आइटम का मान दूसरे आइटम के मान पर सेट हो जाता है। 14, 17 से छोटा है, इसलिए हमारा नया न्यूनतम मान 14 हो जाता है।
| minimum = 14 | |||
| 17 | 14 | 9 | 12 |
यह प्रक्रिया हमारी सूची में प्रत्येक आइटम के लिए दोहराई जाती है। 9, 14 से कम है। इसलिए, "minimum" का मान 9 हो जाता है। 9, 12 से कम नहीं है, इसलिए minimum का मान वही रहता है।
एक इटरेशन के बाद, हमारी सूची ने पाया है कि 9 सबसे छोटी संख्या है। इस आइटम को सूची की शुरुआत में ले जाया जाता है:
| 9 | 17 | 14 | 12 |
यह प्रक्रिया पहले अनसॉर्टेड तत्व से फिर से शुरू होती है। इसलिए, हमारा अगला तुलना सेट 17 से शुरू होगा:
- 17 minimum के बराबर है।
- हमारा प्रोग्राम 17 की तुलना 14 से करता है। "minimum" का मान 14 हो जाता है।
- हमारा प्रोग्राम 14 की तुलना 12 से करता है। "minimum" का मान 12 हो जाता है।
- हमारा प्रोग्राम 12 को सूची में सॉर्टेड आइटम्स के अंत में ले जाता है।
हमारी सूची इस तरह दिखती है:
| 9 | 12 | 17 | 14 |
यह प्रक्रिया तब तक दोहराई जाती है जब तक हमारी सूची ऑर्डर नहीं हो जाती। जब हमारे एल्गोरिदम का निष्पादन समाप्त हो जाता है, तो निम्न सूची लौटाई जाती है:
| 9 | 12 | 14 | 17 |
हमारी सूची आरोही क्रम में सॉर्टेड है।
Java में Selection Sort कैसे बनाएं
यह जानना एक बात है कि selection sort कैसे काम करता है; इसे बनाना दूसरी बात है। आइए Java में selection sort कोड करें जो हमारे द्वारा वॉकथ्रू में चर्चा किए गए लॉजिक का उपयोग करता है।
प्रोग्राम सेट अप करें
selection_sort.java नामक एक फाइल बनाएं। हम अपने कोड में Java Arrays लाइब्रेरी इम्पोर्ट करके शुरू करेंगे:
import java.util.Arrays;
हम बाद में अपने कोड में इस लाइब्रेरी का उपयोग करते हैं। हम इसका उपयोग अपने सॉर्टेड array को स्ट्रिंग में बदलने के लिए करते हैं ताकि हम इसे कंसोल पर प्रिंट कर सकें।
सॉर्ट फंक्शन बनाएं
अगला, हम एक क्लास घोषित करने जा रहे हैं और एक मेथड बनाएंगे जो हमारे selection sort को परफॉर्म करता है। अपने selection_sort.java फाइल में निम्न जोड़ें:
class SelectionSort { void sortNumbers(int array[]) { int size = array.length; for (int item = 0; item < size - 1; item++) { int minimum = item; for (int number = minimum + 1; number < size; number++) { if (array[number] < array[minimum]) { minimum = number; } } int temporary = array[item]; array[item] = array[minimum]; array[minimum] = temporary; } } }
हमारी क्लास में, हमने sortNumbers नामक एक मेथड परिभाषित किया है जो हमारे सॉर्ट को परफॉर्म करता है। हम अपने array की लंबाई की गणना करके शुरू करते हैं। हम अपने array की लंबाई को Java वेरिएबल में स्टोर करते हैं।
फिर, हम Java for लूप बनाते हैं। यह लूप हमारी सूची में हर आइटम के माध्यम से इटरेट करता है। इस for लूप के अंदर, हम minimum आइटम ढूंढते हैं, जो सूची में पहला आइटम है।
फिर हम minimum आइटम की तुलना सूची में हर आइटम से करने के लिए एक और for लूप शुरू करते हैं।
यदि for लूप द्वारा पढ़ा गया नंबर minimum नंबर से छोटा है, तो "minimum" का मान वह नंबर बन जाता है। हमारे लूप में, "number" उस नंबर के इंडेक्स मान को दर्शाता है जिसकी तुलना हम minimum मान से कर रहे हैं।
एक बार minimum नंबर की तुलना सूची में हर नंबर से हो जाने के बाद, हमारा इनर for लूप रुक जाता है। Minimum नंबर को फिर सूची में सभी सॉर्टेड नंबर्स के बाद ले जाया जाता है।
सॉर्ट फंक्शन कॉल करें
हमारा कोड अभी कुछ नहीं करता। हमने अभी तक अपनी क्लास को कॉल नहीं किया है और इसे सॉर्ट करने के लिए सूची नहीं दी है।
sortNumbers मेथड के नीचे सूची में निम्न कोड जोड़ें:
public static void main(String args[]) { int[] toSort = { 17, 14, 9, 12 }; SelectionSort newSort = new SelectionSort(); newSort.sortNumbers(toSort); System.out.println(Arrays.toString(toSort)); }
हमारे मेन मेथड के अंदर हमने toSort नामक आइटम्स की सूची घोषित की है जिसे सॉर्ट करना है। फिर हम अपने SelectionSort क्लास का इंस्टेंस newSort नामक इनिशियलाइज़ करते हैं। हम इसका उपयोग अपने sortNumbers मेथड को कॉल करने के लिए करते हैं, जो toSort array में मानों को सॉर्ट करता है।
sortNumbers मेथड एक्जीक्यूट होने के बाद, हम सॉर्टेड array को कंसोल पर प्रिंट करते हैं। हम इसे Arrays.toString() मेथड का उपयोग करके करते हैं, जो हमारे array को स्ट्रिंग्स की सूची में बदल देता है।
आइए अपना कोड चलाएं:
[9, 12, 14, 17]
हमारी सूची सॉर्ट हो गई है!
Selection Sort Java: मानों को अवरोही क्रम में सॉर्ट करें
यह ध्यान देने योग्य है कि आप मानों को अवरोही क्रम में सॉर्ट कर सकते हैं। ऐसा करने के लिए, अपने sortNumbers मेथड में निम्न कोड लाइन को बदलें:
if (array[number] < array[minimum]) {
इस कोड के साथ:
if (array[number] > array[minimum]) {
यह कोड जांचता है कि "minimum" मान for लूप द्वारा एक्सेस किए जा रहे मान से बड़ा है या नहीं। इसका मतलब है कि "minimum" का मान सूची में सबसे कम मान के बजाय उच्चतम मान को प्रतिबिंबित करेगा।
भ्रम से बचने के लिए, यदि आप सूची को अवरोही क्रम में सॉर्ट कर रहे हैं तो आपको "minimum" का नाम बदलकर "maximum" करना चाहिए।
आपने कर दिखाया। आपने Java में selection sorting एल्गोरिदम का उपयोग करके सूची को सॉर्ट किया है।
Java Selection Sort की जटिलता क्या है?
एल्गोरिदम का मूल्यांकन करते समय हमें तीन समय जटिलताओं पर विचार करने की आवश्यकता होती है: बेस्ट केस, वर्स्ट केस, और औसत केस।
Selection sort की बेस्ट, औसत, और वर्स्ट केस जटिलता O(n^2) है। इसका मतलब है कि एल्गोरिदम सूची में आइटम्स की संख्या बढ़ने पर तेजी से अधिक समय लेगा।
क्या आप एल्गोरिदम की जटिलता से भ्रमित हैं? Big O Notation पर हमारी दो-भाग श्रृंखला देखें। यह वह नोटेशन है जिसका उपयोग हम एल्गोरिदम की जटिलता का वर्णन करने के लिए करते हैं।
निष्कर्ष
Selection sorts डेटा की सूचियों को सॉर्ट करने का एक कुशल तरीका है। वे अनसॉर्टेड सूची से सबसे छोटे आइटम का चयन करके और उस आइटम को अनसॉर्टेड सूची की शुरुआत में ले जाकर काम करते हैं। यह प्रक्रिया तब तक दोहराई जाती है जब तक सूची सॉर्ट नहीं हो जाती।
क्या आप Java डेवलपर बनना चाहते हैं? हमारा How to Learn Java गाइड देखें। आपको इस गाइड में शीर्ष सीखने के टिप्स और सर्वोत्तम ऑनलाइन कोर्स और लर्निंग संसाधनों पर सलाह मिलेगी।