কম্পিউটার

কিভাবে 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. সি# ব্যবহার করে অ্যারেতে একটি সদৃশ নম্বর রয়েছে কিনা তা কীভাবে পরীক্ষা করবেন?

  2. কিভাবে C# ব্যবহার করে অ্যারেতে সংগ্রহ কপি করবেন?

  3. কিভাবে একটি C# পদ্ধতিতে প্যারাম অ্যারে ব্যবহার করে পরামিতি পাস করবেন?

  4. কিভাবে আমরা জাভাতে পূর্বনির্ধারিত পদ্ধতি ব্যবহার না করে একটি স্ট্রিং সাজাতে পারি?