Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

सी # का उपयोग करके अतिरिक्त स्थान के बिना एक ऐरे (डच राष्ट्रीय ध्वज) में 0,1,2 कैसे क्रमबद्ध करें?

हमें थ्री-पॉइंटर्स लेने की जरूरत है, लो, मिड, हाई। हम शुरुआत में निम्न और मध्य बिंदुओं का उपयोग करेंगे, और उच्च सूचक दिए गए सरणी के अंत में इंगित करेंगे।

यदि सरणी [मध्य] =0 है, तो सरणी [मध्य] को सरणी [निम्न] के साथ स्वैप करें और दोनों पॉइंटर्स को एक बार बढ़ाएं।

यदि सरणी [मध्य] =1 है, तो कोई अदला-बदली की आवश्यकता नहीं है। मध्य सूचक को एक बार बढ़ाएँ।

यदि सरणी [मध्य] =2, तो हम सरणी [मध्य] को सरणी [उच्च] के साथ स्वैप करते हैं और उच्च सूचक को एक बार घटाते हैं।

समय जटिलता - O(N)

उदाहरण

using System;
namespace ConsoleApplication{
   public class Arrays{
      private void Swap(int[] arr, int pos1, int pos2){
         int temp = arr[pos1];
         arr[pos1] = arr[pos2];
         arr[pos2] = temp;
      }
      public void DutchNationalFlag(int[] arr){
         int low = 0;
         int mid = 0;
         int high = arr.Length - 1;
         while (mid <= high){
            if (arr[mid] == 0){
               Swap(arr, low, mid);
               low++;
               mid++;
            }
            else if (arr[mid] == 2){
               Swap(arr, high, mid);
               high--;
            }
            else{
               mid++;
            }
         }
      }
}
class Program{
   static void Main(string[] args){
         Arrays a = new Arrays();
         int[] arr = { 2, 1, 1, 0, 1, 2, 1, 2, 0, 0, 1 };
         a.DutchNationalFlag(arr);
         for (int i = 0; i < arr.Length; i++){
            Console.WriteLine(arr[i]);
         }
         Console.ReadLine();
      }
   }
}

आउटपुट

0 0 0 0 1 1 1 1 2 2 2

  1. सी # का उपयोग करके संग्रह को ऐरे में कैसे कॉपी करें?

    किसी संग्रह को किसी सरणी में कॉपी करने के लिए, सबसे पहले इसे सेट करें - List < string > list1 = new List < string > (); list1.Add("Car"); list1.Add("Bus"); list1.Add("Motorbike"); list1.Add("Train"); अब एक स्ट्रिंग सरणी घोषित करें और कॉपी करने के

  1. सी # विधि में परम सरणी का उपयोग करके पैरामीटर कैसे पास करें?

    एक विधि घोषित करते समय, आप पैरामीटर के रूप में पारित तर्कों की संख्या के बारे में सुनिश्चित नहीं हैं। C# परम सरणियाँ (या पैरामीटर सरणियाँ) ऐसे समय में मदद में आती हैं। इस तरह आप परम का उपयोग कर सकते हैं - public int AddElements(params int[] arr) { } निम्नलिखित पूरा उदाहरण है - उदाहरण using System;

  1. जावा में पूर्वनिर्धारित विधियों का उपयोग किए बिना हम स्ट्रिंग को कैसे सॉर्ट कर सकते हैं?

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