अॅरे क्रमवारी लावणे हे सर्वात सामान्य ऑपरेशन्सपैकी एक आहे जे जावा नवशिक्याला कसे करावे हे माहित असले पाहिजे. जरी अॅरे डेटाची व्यवस्था करण्याचा सर्वात सोयीस्कर मार्ग नसला तरी आणि हे बहुतेक लहान संख्येवर लागू होते, अॅरे क्रमवारीच्या मागे असलेल्या संकल्पनेमध्ये जटिल सॉफ्टवेअर आणि डेटा सायन्समध्ये बरेच अनुप्रयोग आहेत. या पोस्टमध्ये, आम्ही इन्सर्शन सॉर्ट काय आहे ते जवळून पाहू. तुम्हाला या संकल्पनेची पूर्ण माहिती मिळवण्यात मदत करण्यासाठी आम्ही काही उदाहरणे आणि सराव समस्या समाविष्ट केल्या आहेत.
इन्सर्शन सॉर्ट म्हणजे काय?
मूलभूतपणे, इन्सर्शन सॉर्ट हा एक अल्गोरिदम आहे जो डेव्हलपर लहान संख्यांच्या स्ट्रिंग्स व्यवस्थित करण्यासाठी वापरतात. हे सर्व मूल्यांना दोन स्टॅकमध्ये विभाजित करते - एक क्रमवारी केलेले आणि एक क्रमबद्ध केलेले नाही. एकामागून एक, "अनुक्रमित" स्टॅकमधील संख्या निवडल्या जातात आणि योग्य क्रमाने ठेवल्या जातात. इन्सर्टेशन सॉर्टचे इनपुट आणि आउटपुट जवळून पाहू:- इनपुट: क्रमबद्ध न केलेल्या अंकीय घटकांसह अॅरे A: A[0,1, n, n-2...].
- आउटपुट: समान संख्या असलेला परंतु पूर्ण क्रमवारी असलेला अॅरे. याला सामान्यतः B: B[0]B[1]...B[n-1] असे संबोधले जाते.
- संख्यात्मक क्रमवारी (वाढता क्रम): [१, २, ३, ४, ५]
- संख्यात्मक क्रमवारी (घटते क्रम): [५, ४, ३, २, १]
- वर्णक्रमानुसार क्रमवारी: [a, b, c, d]
इनसर्शन सॉर्टचा सिद्धांत समजून घेणे
इन्सर्टेशन सॉर्टमागील कोड एक्सप्लोर करण्याआधी, नॉन-टेक्निकल भाषा वापरून अल्गोरिदम मोडू. कारण आम्ही चढत्या क्रमाने क्रमवारी लावण्यासाठी कोड दाखवणार आहोत, या पोस्टमध्ये चरण-दर-चरण अल्गोरिदम स्पष्ट करणे अर्थपूर्ण आहे. पायरी 1. संख्यात्मक मूल्य सामान्यत: 10 पेक्षा कमी असतेarr[1]
आणि arr[n]
कुठे दरम्यान पुनरावृत्ती करणे . पायरी 2. पद्धत वापरून क्रमातील मागील क्रमांकाशी तुम्ही निवडलेल्या घटकाची (म्हणून ओळखले जाते) तुलना करा . पायरी 3. सर्व घटक त्यांच्या उत्तराधिकार्यांपेक्षा लहान असल्यास, तुम्हाला मोठे मूल्य मिळेपर्यंत तुलना पुन्हा करा. पायरी 4. ऑर्डर केलेला क्रम तयार करण्यासाठी लहान स्थानाच्या पलीकडे एक मोठे मूल्य एक स्थान बदला. n
key
sort()
चरण 5. जोपर्यंत तुम्हाला वर्णांची क्रमवारी लावलेली स्ट्रिंग मिळत नाही तोपर्यंत प्रक्रियेची पुनरावृत्ती करा
आदिम अॅरे क्रमवारी लावत आहे
अल्गोरिदम हे सर्वात सोप्या Java ऑपरेशन्सपैकी एक असल्याने, अगदी पूर्ण नवशिक्यांनाही ते लागू करण्यात फारसा त्रास होऊ नये. अॅरे क्रमवारी लावण्यासाठी येथे चरण-दर-चरण मार्गदर्शक आहे1. वर्गीकरणासाठी अॅरे घोषित करा
सुरुवात करण्यासाठी, व्हॅल्यूजची एक स्ट्रिंग बनवूया जी आम्ही नंतर Java वापरून दाखवू. इन्सर्शन सॉर्ट वापरण्यासाठी, तुम्हाला अॅरे तयार करणे आवश्यक आहे. त्यासाठी, वापराint[]
int[] arrayA = {10, 14, 20, 30};
2. अल्गोरिदम लागू करण्यासाठी sort_arr वापरा
sort_arr पद्धत ही इनसर्शन सॉर्ट अंमलात आणण्याच्या सर्वात सामान्य पद्धतींपैकी एक आहे. सराव मध्ये, हे असे दिसते:
for(int i=0; i< sort_arr.length; ++i){
int j = i;
3. एक लूप आणि एक पुनरावृत्ती तयार करा
इन्सर्शन सॉर्ट अल्गोरिदममध्ये लूप वापरून, डेव्हलपरला प्रत्येक घटकासाठी तर्काची पुनरावृत्ती करावी लागत नाही. लूप तयार करणे अवघड वाटत असले तरी ते अगदी सोपे आहे - येथे एक उदाहरण आहे:
for(int i=0; i< sort_arr.length; ++i){
आता तुमच्याकडे एक कार्यशील लूप आहे, ही एक पुनरावृत्ती तयार करण्याची वेळ आली आहे जे इच्छित क्रमाने सर्व घटकांची क्रमवारी लावेल. आतापासून, आम्ही इटरेटरचा संदर्भ " j
" म्हणून घेऊ.
int j = i;
4. "व्हाइल लूप" तयार करणे
जेव्हा इन्सर्टेशन सॉर्टचा प्रश्न येतो तेव्हा नवीन, सॉर्ट केलेल्या अॅरेसाठी "व्हाइल" लूप आवश्यक असतो. चढत्या क्रमाने समाविष्ट करण्याच्या क्रमवारीसाठी ते सेट करण्यासाठी, विकासकाने दोन अटींचे पालन करणे आवश्यक आहे:- j ला नियुक्त केलेले मूल्य 0 पेक्षा जास्त असणे आवश्यक आहे
- नियुक्त केलेले मूल्य निर्देशांकापेक्षा
j-1
मोठे असणे आवश्यक आहेj
j
.
5. अॅरे क्रमवारी लावणे
तुम्ही while लूप सेट केल्यानंतर, while loop मधील एक किंवा दोन्ही अटी फेल होईपर्यंतj
आणि व्हॅल्यूज स्वॅप केले जातील. j-1
त्याचप्रमाणे, फॉर-लूप परिस्थिती देखील अयशस्वी होईपर्यंत लूपमधील प्रत्येक मूल्यासाठी क्रमवारीची पुनरावृत्ती केली जाईल. अंतर्भूत क्रमवारीची प्रक्रिया सराव मध्ये कशी कार्य करते ते येथे आहे:
int key = sort_arr[j];
sort_arr[j] = sort_arr[j-1];
sort_arr[j-1] = key;
j = j-1;
अॅरेलिस्टची क्रमवारी लावत आहे
इन्सर्टेशन सॉर्टमागील गणित समजून घेणे महत्त्वाचे असले तरी, जेव्हा वास्तविक जीवनातील सॉफ्टवेअर डेव्हलपमेंटचा विचार केला जातो, तेव्हा तुम्ही अॅरेलिस्टची क्रमवारी आदिम अॅरेमधील अनुक्रमांपेक्षा खूपच जास्त कराल. ArrayList क्रमवारी लावण्यासाठी येथे चरण-दर-चरण मार्गदर्शक आहे:Element
संग्रहाशी संबंधित असलेल्या आयटमसाठी नवीन वर्ग तयार करा .public class Element { private int id; public Element(int id) { this.id = id; }
- संग्रहामध्ये, एक
compareTo()
पद्धत आहे - आम्ही दोन घटकांच्या आयडीची तुलना करण्यासाठी याचा वापर करू.public int compareTo(Element element) { int res = 0; if (this.id < element.getId()) { res = -1; } if (this.id > element.getId()) { res = 1; } return res; } }
- अल्गोरिदम लागू करा आणि वस्तूंची
ArrayList
तुलना करण्याऐवजी त्यांची क्रमवारी लावण्यासाठी काही लूप तयार करा.public static void insertionSortArrayList(List<element> list) { for (int j = 1; j < list.size(); j++) { Element current = list.get(j); int i = j-1; while ((i > -1) && ((list.get(i).compareTo(current)) == 1)) { list.set(i+1, list.get(i)); i--; } list.set(i+1, current); } }
ArrayList
खाली दर्शविल्याप्रमाणे, आपण आणखी घटक देखील जोडू शकता :List<element> list = new ArrayList<>(); // Create elements w/ IDs 0-24 for (int i = 0; i < 25; i++) { list.add(new Element(i)); } // To use insertion sort, shuffle the values Collections.shuffle(list);
- आता क्रमवारी लावण्याची वेळ आली आहे:
// This helps print values before sorting list.forEach(e -> System.out.print(e.getId() + ", ")); // Sort the list insertionSortArrayList(list); System.out.println(); // Display a sorted array list.forEach(e -> System.out.print(e.getId() + ", "));
- आता आपल्याकडून कोणतीही चूक झाली नाही याची खात्री करण्यासाठी इनपुट आणि आउटपुटची तुलना करूया. आम्ही उदाहरण म्हणून वापरलेली स्ट्रिंगची तुलना येथे आहे.
4, 2, 6, 7, 0, 5, 9, 1, 8, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
GO TO FULL VERSION