【发布时间】:2014-08-01 21:10:09
【问题描述】:
#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 从第 3 个元素开始的数组已在此处传递给 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
【问题讨论】:
-
你不能,真的。不过,您可以让
fun接受offset参数。 -
您打算更改原始数组的一部分还是制作一个全新的数组?
-
@CyberneticTwerkGuruOrc 我只需要递归访问数组的一个小节。实际上,我试图使用以下算法找到“通过比较两个数组的中位数来查找两个排序数组的中位数”:
-
@CyberneticTwerkGuruOrc 请检查已编辑的问题,因为这里写得太长了。
标签: java arrays function argument-passing