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

जावा में K क्रमबद्ध सरणियों को मर्ज करें


हमें 'n' संख्या में सरणियाँ दी गई हैं, मान लें कि हम तीन सरणियाँ लेते हैं यानी arr1[], arr2[] और arr3[] पूर्णांक प्रकार की। कार्य सभी दी गई पूर्णांक सरणियों को इस तरह मर्ज करना है कि परिणामी सरणी केवल रनटाइम में क्रमबद्ध हो।

आइए उदाहरण से समझते हैं

इनपुट -

Int

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

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

आउटपुट - int resultant[ ]={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 resultant[ ]={1,3,5,7,9,11,13,14,16,18,19,20,21,22}.

व्याख्या - सरणी तत्वों की तुलना की जाती है इससे पहले कि वे जोड़े जाएं और परिणामी सरणी में उनकी उपयुक्त स्थिति के अनुसार जोड़े जाते हैं।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण इस प्रकार है -

  • तीन पूर्णांक सरणी इनपुट करें मान लें, arr1[], arr2[] और arr3[] और एक परिणामी सरणी result[] और इसे mergeSortedArray(new int[][] { arr1, arr2, arr3 }) के कॉल के रूप में सेट करें

  • विधि mergeSortedArray(new int[][] { arr1, arr2, arr3 }) के अंदर

    • प्रायोरिटी क्यू प्रकार का एक वेरिएबल क्यू के रूप में बनाएं और एक वेरिएबल टोटल के रूप में बनाएं और इसे 0 पर सेट करें।

    • i से 0 तक सरणी की लंबाई तक FOR लूप शुरू करें और सरणी के बकेट से तत्व को क्यू के रूप में घोषित वेरिएबल में जोड़ें और टोटल को टोटल + arr[i].length पर सेट करें।

    • m को 0 पर सेट करें और result[] पूर्णांक सरणी घोषित करें।

    • while queue.isEmpty() = false शुरू करें फिर 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)) सेट करें

    • result वापस करें

उदाहरण

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. - Python में k सॉर्टेड सूचियों को मर्ज करें

    मान लीजिए हमारे पास कुछ सूचियाँ हैं, ये सॉर्टेड हैं। हमें इन सूचियों को एक सूची में मर्ज करना है। इसे हल करने के लिए, हम हीप डेटा संरचना का उपयोग करेंगे। इसलिए यदि सूचियाँ [1,4,5], [1,3,4], [2,6] हैं, तो अंतिम सूची [1,1,2,3,4,4,5,6] होगी।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −एक हीप बनाएंli

  1. - पायथन में क्रमबद्ध सरणी मर्ज करें

    मान लीजिए हमारे पास दो क्रमबद्ध सरणी A और B हैं। हमें उन्हें मर्ज करना है और केवल एक क्रमबद्ध सरणी C बनाना है। सूचियों का आकार भिन्न हो सकता है। उदाहरण के लिए, मान लीजिए A = [1,2,4,7] और B = [1,3,4,5,6,8], तो मर्ज की गई सूची C [1,1,2,3,4,4,5,6,7,8] होगी। हल करने के चरण i := 0, j := 0 और end := A क

  1. - पायथन में heapq का उपयोग करके दो सॉर्टेड ऐरे को मर्ज करना

    इस खंड में हम देखेंगे कि heapq मॉड्यूल का उपयोग करके पायथन में दो सॉर्टेड सूचियों को कैसे मर्ज किया जा सकता है। उदाहरण के लिए, यदि list1 = [10, 20, 30, 40] और list2 = [100, 200, 300, 400, 500], तो मर्ज करने के बाद यह list3 = [10, 20, 30, 40, 100, 200, 300, 400, 500] लौटाएगा। इस कार्य को करने के लिए