কম্পিউটার

জাভাতে k সাজানো অ্যারে মার্জ করুন


আমাদেরকে অ্যারের একটি 'n' নম্বর দেওয়া হয়েছে, ধরা যাক আমরা তিনটি অ্যারে নিই যেমন arr1[], arr2[] এবং arr3[] পূর্ণসংখ্যার ধরন। কাজটি হল সমস্ত প্রদত্ত পূর্ণসংখ্যা অ্যারেগুলিকে এমনভাবে একত্রিত করা যাতে ফলাফলের অ্যারেটি শুধুমাত্র রানটাইমে সাজানো হয়৷

উদাহরণ দিয়ে বোঝা যাক

ইনপুট

ইন্টা

a[]={21,22,23,24};

int b[ ] ={28,31,35}

আউটপুট −int ফলাফল[ ]={21,22,23,24,28,31,35}।

ব্যাখ্যা − ফলাফলের অ্যারেতে তাদের উপযুক্ত অবস্থান অনুসারে অ্যারে উপাদানগুলি যোগ করার আগে তুলনা করা হয়।

ইনপুট

int

a[]={1,3,5,7,9,11,13};

int b[ ] ={14,16,18}

int c[ ] ={19,20,21,22}

আউটপুট − int ফলাফল[ ]={1,3,5,7,9,11,13,14,16,18,19,20,21,22}৷

ব্যাখ্যা −অ্যারে উপাদানগুলিকে যোগ করার আগে তুলনা করা হয় এবং ফলস্বরূপ অ্যারেতে তাদের উপযুক্ত অবস্থান অনুযায়ী যোগ করা হয়।

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি হল -

  • তিনটি পূর্ণসংখ্যার অ্যারে ইনপুট করা যাক, arr1[], arr2[] এবং arr3[] এবং একটি ফলাফল হিসাবে একটি অ্যারে [] এবং এটিকে mergeSortedArray(new int[][] { arr1, arr2, arr3) হিসাবে একটি পদ্ধতিতে সেট করুন })

  • মেথডের ভিতরে mergeSortedArray(নতুন int[][] { arr1, arr2, arr3 })

    • টাইপ অগ্রাধিকার সারির একটি সারি হিসাবে একটি ভেরিয়েবল তৈরি করুন এবং একটি ভেরিয়েবল অ্যাস্টটোল এবং এটি 0 এ সেট করুন৷

    • একটি অ্যারের দৈর্ঘ্য পর্যন্ত i থেকে 0 পর্যন্ত FOR লুপ শুরু করুন এবং একটি অ্যারের বালতি থেকে সারি হিসাবে ঘোষিত ভেরিয়েবলে উপাদান যোগ করুন এবং মোট + arr[i]. দৈর্ঘ্যে সেট করুন৷

    • m 0 এ সেট করুন এবং ফলাফল [] পূর্ণসংখ্যা অ্যারে ঘোষণা করুন।

    • queue.isEmpty() =false থাকাকালীন শুরু করুন তারপর ArrayBucket ac toqueue.poll(), ফলাফল[m++] এ ac.arr[ac.index] সেট করুন এবং ac.arr.length - 1 এর চেয়ে IF ac.indexless চেক করুন তারপর কিউ সেট করুন। যোগ করুন(newArrayBucket(ac.arr, ac.index + 1))

    • রিটার্ন ফলাফল

উদাহরণ

import java.util.Arrays;
import java.util.PriorityQueue;
class ArrayBucket implements Comparable<ArrayBucket>{
   int[] arr;
   int index;
   public ArrayBucket(int[] arr, int index){
      this.arr = arr;
      this.index = index;
   }
   @Override
   public int compareTo(ArrayBucket o){
      return this.arr[this.index] - o.arr[o.index];
   }
}
public class testClass{
   public static int[] mergeSortedArray(int[][] arr){
      PriorityQueue<ArrayBucket> queue = new
      PriorityQueue<ArrayBucket>();
      int total = 0;
      for (int i = 0; i < arr.length; i++){
         queue.add(new ArrayBucket(arr[i], 0));
         total = total + arr[i].length;
      }
      int m = 0;
      int result[] = new int[total];
      while (!queue.isEmpty()){
         ArrayBucket ac = queue.poll();
         result[m++] = ac.arr[ac.index];
         if (ac.index < ac.arr.length - 1){
            queue.add(new ArrayBucket(ac.arr, ac.index + 1));
         }
      }
      return result;
   }
   public static void main(String[] args){
      int[] arr1 = { 1, 3, 5, 7 };
      int[] arr2 = { 2, 4, 6, 8 };
      int[] arr3 = { 0, 9, 10, 11 };
      int[] result = mergeSortedArray(new int[][] { arr1, arr2, arr3 });
      System.out.println("The final merged sorted array is :- "+Arrays.toString(result));
   }
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে

The final merged sorted array is :-[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

  1. জাভা কি বহুমাত্রিক অ্যারে সমর্থন করে?

  2. পাইথনে k সাজানো তালিকা মার্জ করুন

  3. পাইথনে সাজানো অ্যারে মার্জ করুন

  4. Heapq ব্যবহার করে পাইথনে দুটি সাজানো অ্যারে মার্জ করবেন?