কম্পিউটার

C# ব্যবহার করে কোন অতিরিক্ত স্থান ব্যবহার না করে কিভাবে একটি অ্যারেতে 0,1 সাজানো যায়?


দুই-পয়েন্টার নিন, নিম্ন, উচ্চ। আমরা শুরুতে নিম্ন পয়েন্টার ব্যবহার করব, এবং উচ্চ পয়েন্টার প্রদত্ত অ্যারের শেষে নির্দেশ করবে।

যদি অ্যারে [নিম্ন] =0, তাহলে অদলবদল করার প্রয়োজন নেই

যদি অ্যারে [low] =1 হয়, তাহলে অদলবদল প্রয়োজন। একবার উচ্চ পয়েন্টার হ্রাস করুন।

সময় জটিলতা − O(N)

উদাহরণ

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

আউটপুট

0 0 1 1 1 1

  1. জাভাস্ক্রিপ্টে তারিখ অ্যারে কীভাবে সাজানো যায়

  2. জাভাস্ক্রিপ্টে sort() ব্যবহার না করে অ্যারে সাজানো

  3. অ্যান্ড্রয়েডে অ্যারে উপাদানগুলি কীভাবে সাজানো যায়?

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