CodeGym /Java Blog /यादृच्छिक /जावा मध्ये समाविष्ट क्रमवारी लावा
John Squirrels
पातळी 41
San Francisco

जावा मध्ये समाविष्ट क्रमवारी लावा

यादृच्छिक या ग्रुपमध्ये प्रकाशित केले
अॅरे क्रमवारी लावणे हे सर्वात सामान्य ऑपरेशन्सपैकी एक आहे जे जावा नवशिक्याला कसे करावे हे माहित असले पाहिजे. जरी अॅरे डेटाची व्यवस्था करण्याचा सर्वात सोयीस्कर मार्ग नसला तरी आणि हे बहुतेक लहान संख्येवर लागू होते, अॅरे क्रमवारीच्या मागे असलेल्या संकल्पनेमध्ये जटिल सॉफ्टवेअर आणि डेटा सायन्समध्ये बरेच अनुप्रयोग आहेत. या पोस्टमध्ये, आम्ही इन्सर्शन सॉर्ट काय आहे ते जवळून पाहू. तुम्हाला या संकल्पनेची पूर्ण माहिती मिळवण्यात मदत करण्यासाठी आम्ही काही उदाहरणे आणि सराव समस्या समाविष्ट केल्या आहेत.

इन्सर्शन सॉर्ट म्हणजे काय?

मूलभूतपणे, इन्सर्शन सॉर्ट हा एक अल्गोरिदम आहे जो डेव्हलपर लहान संख्यांच्या स्ट्रिंग्स व्यवस्थित करण्यासाठी वापरतात. हे सर्व मूल्यांना दोन स्टॅकमध्ये विभाजित करते - एक क्रमवारी केलेले आणि एक क्रमबद्ध केलेले नाही. एकामागून एक, "अनुक्रमित" स्टॅकमधील संख्या निवडल्या जातात आणि योग्य क्रमाने ठेवल्या जातात. जावा मधील इनसर्शन सॉर्ट - १इन्सर्टेशन सॉर्टचे इनपुट आणि आउटपुट जवळून पाहू:
  • इनपुट: क्रमबद्ध न केलेल्या अंकीय घटकांसह अॅरे 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. ऑर्डर केलेला क्रम तयार करण्यासाठी लहान स्थानाच्या पलीकडे एक मोठे मूल्य एक स्थान बदला. nkeysort()चरण 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 क्रमवारी लावण्यासाठी येथे चरण-दर-चरण मार्गदर्शक आहे:
  1. Elementसंग्रहाशी संबंधित असलेल्या आयटमसाठी नवीन वर्ग तयार करा .

    
    public class Element {
        private int id;
    
        public Element(int id) {
            this.id = id;
        }
    

  2. संग्रहामध्ये, एक 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;
        }
    }
    

  3. अल्गोरिदम लागू करा आणि वस्तूंची 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);
        }
    }
    

  4. 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);
    

  5. आता क्रमवारी लावण्याची वेळ आली आहे:

    
    // 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() + ", "));
    

  6. आता आपल्याकडून कोणतीही चूक झाली नाही याची खात्री करण्यासाठी इनपुट आणि आउटपुटची तुलना करूया. आम्ही उदाहरण म्हणून वापरलेली स्ट्रिंगची तुलना येथे आहे.

    
    4, 2, 6, 7, 0, 5, 9, 1, 8, 3,
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
    

अंतर्भूत क्रमवारी सराव समस्या

आता तुमच्याकडे या वर्गीकरणाच्या अल्गोरिदमचा ताबा आहे, तुमच्या सैद्धांतिक आणि व्यावहारिक कौशल्यांची चाचणी घेण्याची वेळ आली आहे. थिअरी क्विझ #1 तुम्हाला एक अॅरे [१, ४, ६, ८] दिलेला आहे आणि त्यामध्ये n = 7 नवीन घटक जोडत आहात. संख्यांचा क्रमबद्ध क्रम मिळविण्यासाठी तुम्हाला किती तुलनेची आवश्यकता असेल? अॅरेमध्ये इंडेक्स n चे अंतिम मूल्य दर्शवा. थिअरी क्विझ #2 नोकरीच्या मुलाखतीत, टीम लीड तुम्हाला हे सिद्ध करण्यास सांगतो की क्रमवारी घालणे ही एक अकार्यक्षम पद्धत आहे. [0, 3, 6, 8, 9] ची संख्यात्मक स्ट्रिंग दिल्यास, क्रमवारी लावण्यासाठी लागणारा वेळ वाढवण्यासाठी तुमच्या इनपुट क्रमाचा क्रम काय असावा? सराव समस्या Java साठी इन्सर्टेशन सॉर्ट वापरून [0, 1, 4, 5, 2, 3, 7, 9, 8] अॅरेला त्याच्या चढत्या क्रमाने क्रमवारी लावा.

निष्कर्ष

इन्सर्शन सॉर्ट समजून घेण्यात सर्वात मोठे आव्हान म्हणजे प्रक्रिया कशी कार्य करते हे समजून घेणे. एकदा का तुम्‍हाला ते हँग झाल्‍यावर, टेम्‍प्‍लेटला कोडमध्‍ये बदलणे हा केकचा तुकडा आहे. जोपर्यंत तुम्ही सराव कराल आणि वेळोवेळी संबंधित सराव समस्यांची पुनरावृत्ती कराल, तोपर्यंत तुम्ही तुमची इन्सर्शन क्रमवारी गती वेगाने सुधाराल.
टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION