gpt4 book ai didi

java - 如何在java中将数组的一部分作为函数参数传递?

转载 作者:行者123 更新时间:2023-12-02 11:02:25 25 4
gpt4 key购买 nike

#include<stdio.h>
void fun(int a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ",a[i]);
}

int main()
{
int arr[]={1,2,3,4,5,6};
fun(arr+2,3);
return 0;
}

输出:3 4 5从第三个元素开始的数组已被传递给 C 中的 fun() 。鉴于JAVA中没有这样的指针,如何在JAVA中执行相同的操作?

为了回应下面的一条评论,我想添加我实际想要做的事情的细节,因为它对于评论部分来说太长了。我只需要递归访问数组的一小部分。实际上,我试图使用以下算法找到“通过比较两个数组的中位数来找到两个排序数组的中位数”:1)计算输入数组ar1[]的中位数m1和m2 和 ar2[] 分别。2) 如果 m1 和 m2 都相等,那么我们就完成了。 返回 m1(或 m2)3) 如果 m1 大于 m2,则中位数存在于一个中 下面的两个子数组。 a) 从 ar1 的第一个元素到 m1 (ar1[0...|n/2|]) b) 从 m2 到 ar2 的最后一个元素 (ar2[|n/2|...n-1])4)如果m2大于m1,则中位数存在于一个
下面的两个子数组。 a) 从 m1 到 ar1 的最后一个元素 (ar1[|n/2|...n-1]) b) 从 ar2 的第一个元素到 m2 (ar2[0...|n/2|])5)重复上述过程,直到两个子数组的大小都达到 变为 2。6)如果两个数组的大小为2,则使用以下公式得到 中位数。 中位数 = (max(ar1[0], ar2[0]) + min(ar1[1], ar2[1]))/2

最佳答案

如果您不会修改数组,则可以使用 Arrays.copyOfRange(int\[\] original, int from, int to) 创建范围的副本:

import java.util.Arrays;
...
public static void main(String args[])
{
int arr[] = { 1, 2, 3, 4, 5, 6 };
fun(Arrays.copyOfRange(arr, 2, arr.length), 3);
}

public static void fun(int a[], int n)
{
for (int i = 0; i < n; i++) {
System.out.printf("%d ", a[i]);
}
}

关于java - 如何在java中将数组的一部分作为函数参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24169216/

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