Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java का उपयोग करके 0, 1 और 2 के सरणी को क्रमबद्ध करना

समस्या विवरण

0, 1 और 2 की एक सरणी दी गई है, तत्वों को इस क्रम में क्रमबद्ध करें कि सभी शून्य पहले आएं, फिर 1 और अंत में सभी 2। हमें सरणी के सभी तत्वों को इन-प्लेस क्रमबद्ध करना है।

हम इस समस्या को DNF (डच नेशनल फ्लैग) सॉर्टिंग एल्गोरिदम का उपयोग करके हल कर सकते हैं।

उदाहरण

इनपुट-1

arr[] = {2,0,0,1,2,1}

आउटपुट

0 0 1 1 2 2

व्याख्या - DNF सॉर्टिंग एल्गोरिदम का उपयोग करके 0,1 और 2 वाले दिए गए सरणी को क्रमबद्ध करने पर आउटपुट {0,0,1,1,2,2} होगा।

समस्या हल करने का दृष्टिकोण

दिए गए 0, 1, और 2 के सरणी में हम DNF सॉर्टिंग एल्गोरिदम का उपयोग कर सकते हैं।

DNF सॉर्टिंग एल्गोरिदम

एल्गोरिदम को सरणी में पुनरावृति करने और आवश्यक तत्वों को स्वैप करने के लिए 3 पॉइंटर्स की आवश्यकता होती है।

  • सरणी की शुरुआत में एक लो पॉइंटर और अंत में एक हाई पॉइंटर बनाएं।
  • सरणी का मध्य बिंदु खोजें और एक मिड-पॉइंटर भी बनाएं जो सरणी की शुरुआत से अंत तक पुनरावृति करता है।
  • यदि सरणी का मिड पॉइंटर '0' है, तो लो पर इंगित करने वाले तत्व के साथ स्वैप करें। लो पॉइंटर और मिड पॉइंटर को बढ़ाएं।
  • यदि सरणी का मिड-पॉइंटर '2' है, तो इसे हाई पर इंगित करने वाले तत्व के साथ स्वैप करें। मिड पॉइंटर को बढ़ाएं और हाई पॉइंटर को घटाएं।
  • यदि सरणी का मिड-पॉइंटर '1' है, तो मिड पॉइंटर को बढ़ाएं।

उदाहरण

public class Solution {
    public static void binarySorting(int arr[], int n){
        int low=0;
        int high= n-1;
        int mid=0;
        while(mid<=high){
            if(arr[mid]==0){
                int temp= arr[mid];
                arr[mid]= arr[low];
                arr[low]= temp;
                mid++;
                low++;
            }
            if(arr[mid]==1){
                mid++;
            }
            if(arr[mid]==2){
                int temp= arr[mid];
                arr[mid]= arr[high];
                arr[high]= temp;
                high--;
            }
        }
    }
    public static void print(int arr[], int n){
        for (int i = 0; i < n; i++)
            System.out.print(arr[i] +" ");
    }
    public static void main(String[] args){
        int arr[] ={ 0,0,1,0,1,0,1,2,2};
        int n = arr.length;
        binarySorting(arr, n);
        print(arr, n);
    }
}

आउटपुट

0 0 0 0 1 1 1 1 2
  1. - जावा में प्रीडिफाइंड मेथड्स के बिना स्ट्रिंग को कैसे सॉर्ट करें?

    एक String एक ऑब्जेक्ट है जो कैरेक्टर्स के इम्यूटेबल अनुक्रम को दर्शाता है और एक बार बनने के बाद इसे बदला नहीं जा सकता। java.lang.String क्लास का उपयोग स्ट्रिंग ऑब्जेक्ट बनाने के लिए किया जा सकता है। नीचे दिए गए प्रोग्राम में, हम जावा में String क्लास के किसी भी प्रीडिफाइंड मेथड्स का उपयोग किए बिना

  1. - Java और .NET की तुलना

    Java एक हाई-लेवल प्रोग्रामिंग भाषा है जिसे मूल रूप से Sun Microsystems द्वारा विकसित किया गया था और 1995 में जारी किया गया था। Java Windows, Mac OS, और UNIX के विभिन्न संस्करणों जैसे विभिन्न प्लेटफॉर्म्स पर चलता है। .NET Framework Microsoft द्वारा आविष्कृत एक कंप्यूटर सॉफ्टवेयर फ्रेमवर्क है। यह Mi

  1. Java में पैकेज बनाना और उपयोग करना Java में पैकेज बनाना और उपयोग करना

    पैकेज बनाते समय, आपको पैकेज के लिए एक नाम चुनना चाहिए और उस नाम के साथ एक पैकेज स्टेटमेंट को हर सोर्स फाइल के शीर्ष पर शामिल करना चाहिए जिसमें वे क्लासेस, इंटरफेसेस, एन्यूमरेशन्स, और एनोटेशन टाइप्स हों जिन्हें आप पैकेज में शामिल करना चाहते हैं। पैकेज स्टेटमेंट सोर्स फाइल में पहली लाइन होनी चाहिए।