gpt4 book ai didi

java - 保存生成的数组

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:48 24 4
gpt4 key购买 nike

如何定义/存储生成的数组?

我的目标是从两个排序数组中打印不常见的元素(给定数组与生成的数组,但我需要定义/存储它)。

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);

最佳答案

您可以使用方法 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]

关于java - 保存生成的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60468036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com