मैं जेनरेट किए गए सरणी को कैसे परिभाषित/संग्रहित करूं?
मेरा लक्ष्य दो क्रमबद्ध सरणियों से असामान्य तत्वों को मुद्रित करना है (दिए गए सरणी को उत्पन्न एक के साथ, लेकिन मुझे इसे परिभाषित/संग्रहीत करने की आवश्यकता है)।
if(arr[i]==unknown[?]){
यहाँ पूरा कोड है:
class Program {
public static void main (String[] args) {
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16 };
int n = arr.length;
System.out.println("Sorted array is");
System.out.println(Arrays.toString(arr));
generateWorstCase(arr, 0, n - 1);
System.out.println("\nInput array that will result in \n"+
"worst case of merge sort is \n");
System.out.println(Arrays.toString(arr));
}
static void join(int arr[], int left[], int right[], int l, int m, int r) {
int i;
for (i = 0; i <= m - l; i++)
arr[i] = left[i];
for (int j = 0; j < r - m; j++)
arr[i + j] = right[j];
}
static void split(int arr[], int left[], int right[], int l, int m, int r) {
for (int i = 0; i <= m - l; i++)
left[i] = arr[i * 2];
for (int i = 0; i < r - m; i++)
right[i] = arr[i * 2 + 1];
}
static void generateWorstCase(int arr[], int l, int r) {
if (l < r) {
int m = l + (r - l) / 2;
int[] left = new int[m - l + 1];
int[] right = new int[r - m];
split(arr, left, right, l, m, r);
generateWorstCase(left, l, m);
generateWorstCase(right, m + 1, r);
join(arr, left, right, l, m, r);
}
}
}
उदाहरण:
इनपुट:
{ 100 200 300 400 500 }
आउटपुट:
{ 100 500 300 200 400 }
आउटपुट के साथ इनपुट से असामान्य तत्वों को मुद्रित करने के लिए मैं क्या करूँगा। तो मैं जानना चाहता हूं कि जेनरेट किए गए सरणी को कैसे परिभाषित/संग्रहित किया जाए।
मैंने अलग-अलग तरीकों की कोशिश की, मैंने सोचा कि यह काम करेगा, लेकिन कोई भाग्य नहीं मिला।
int[] arr1 = Arrays.toString(arr);
2 जवाब
आप Arrays.copyOf और फिर कॉपी को अपनी विधि generateWorstCase
में पास करें जो इसे संशोधित करेगी:
int arr[] = { 100, 200, 300, 400, 500 };
int n = arr.length;
int[] copy = Arrays.copyOf(arr, n);
generateWorstCase(copy, 0, n - 1);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(copy)); //will be printed [100, 500, 300, 200, 400]
आप अपने प्रोग्राम की शुरुआत में Arrays.copyOf, और फिर इस पुरानी प्रति की तुलना अपने संशोधित सरणी से करें (ध्यान दें कि नीचे दिया गया समाधान केवल इस मामले में काम करेगा, क्योंकि आपकी सरणी आदिम मूल्य):
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16};
int[] copyOfArr = Arrays.copyOf(arr, arr.length);
int n = arr.length;
System.out.println("Sorted array is");
System.out.println(Arrays.toString(arr));
generateWorstCase(arr, 0, n - 1);
// You can do comparison here
}
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।
generateWorstCase
विधि में पैरामीटर के रूप में पारित हो?