- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
给定两个具有唯一整数元素的数组,即元素在两个数组内或两个数组之间重复:
这是我编写的递归算法,需要帮助来破译我收到的错误消息。
public class Median {
public static void main(String[] args)
{
int[] arr1 = new int[]{1,2,3,4,5};
int[] arr2 = new int[]{6,7,8,9,10};
medianOfBoth(arr1, arr2);
}
public static int medianOfBoth(int[] arr1, int[] arr2)
{
if (arr1.length <= 2 && arr2.length <= 2)
{
return compute_median(arr1, arr2);
}
else if (median(arr1) > median(arr2))
{
//erase top half of arr1 and bottom half of arr2
arr1 = Arrays.copyOfRange(arr1, 0, median(arr1));
arr2 = Arrays.copyOfRange(arr2, median(arr2), arr2.length - 1);
return medianOfBoth(arr1, arr2);
}
else // if (median(arr1) < median(arr2))
{
arr1 = Arrays.copyOfRange(arr1, median(arr1), arr1.length - 1);
arr2 = Arrays.copyOfRange(arr2, 0, median(arr2));
return medianOfBoth(arr1,arr2);
}
}
public static int median(int[] arr)
{
return arr[arr.length/2];
}
public static int compute_median(int[] arr1, int[] arr2)
{
//arr1 and arr2 are either length 1 or 2 in this function
return (max(arr1[0], arr2[0]) + min(arr1[arr1.length-1], arr2[arr2.length-1])) / 2;
}
public static int max(int x, int y)
{
if (x>y)
return x;
else
return y;
}
public static int min(int x, int y)
{
if (x<y)
return x;
else
return y;
}
}
这是我收到的错误信息
Exception in thread "main" java.lang.IllegalArgumentException: 4 > 0
at java.util.Arrays.copyOfRange(Arrays.java:2621)
at Median.medianOfBoth(Median.java:28)
at Median.medianOfBoth(Median.java:30)
at Median.main(Median.java:8)
最佳答案
稍微更改了您的代码。请注意。
import java.io.*;
import java.util.*;
public class Main {
public static int median(int[] arr)
{
return arr[arr.length/2];
}
public static int med(int[] arr)
{
return arr.length/2;
}
public static int max(int x, int y)
{
if (x>y)
return x;
else
return y;
}
public static int min(int x, int y)
{
if (x<y)
return x;
else
return y;
}
public static int compute_median(int[] arr1, int[] arr2)
{
//arr1 and arr2 are either length 1 or 2 in this function
return (max(arr1[0], arr2[0]) + min(arr1[arr1.length-1], arr2[arr2.length-1])) / 2;
}
public static int medianOfBoth(int[] arr1, int[] arr2)
{
if (arr1.length <= 2 && arr2.length <= 2)
{
return compute_median(arr1, arr2);
}
else if (median(arr1) > median(arr2))
{
//erase top half of arr1 and bottom half of arr2
//System.out.println("hi ="+med(arr2)+" "+arr2.length+"\n");
arr1 = Arrays.copyOfRange(arr1, 0, med(arr1));
arr2 = Arrays.copyOfRange(arr2, med(arr2), arr2.length);
return medianOfBoth(arr1, arr2);
}
else // if (median(arr1) < median(arr2))
{
//System.out.println("bi ="+med(arr1)+" "+arr1.length+"\n");
arr1 = Arrays.copyOfRange(arr1, med(arr1), arr1.length);
arr2 = Arrays.copyOfRange(arr2, 0, med(arr2));
return medianOfBoth(arr1,arr2);
}
}
public static void main(String[] args)
{
int[] arr1 = new int[]{1,2,3,4,5};
int[] arr2 = new int[]{1,3,5,7,9};
System.out.println(medianOfBoth(arr1, arr2));
}
}
关于Java递归 "find median"算法异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21618050/
我已经在 python 中编写了这个中位数算法的实现,但它似乎没有输出正确的结果,而且它对我来说似乎也不是线性复杂度,知道我在哪里偏离轨道了吗? def select(L): if len(L
我正在使用中位数中位数枢轴方法实现第 k 个选择算法。具体来说,我正在关注 pseudocode listed here. .但是,我的代码崩溃了(下面讨论的错误),我知道它崩溃的原因,但我不明白我能
我想将中位数算法应用于 35 个元素的列表 3 7 4 6 9 12 11 4 5 6 8 2 7 11 23 12 4 7 3 9 8 4 5 6 3 2 1 9 9 3 4 5 6 1 14 T(
作为家庭作业,我被分配编写算法,从无序数字集中找到第 k 个有序数字。作为一种方法,提出了算法中位数的中位数。 不幸的是,我的尝试失败了。如果有人发现错误 - 请纠正我。 private int fi
我已经明白了 我知道中位数算法的中位数(我将表示为 MoM)是一个高常数因子 O(N) 算法。它找到 k 组(通常为 5)的中位数,并将它们用作下一次迭代的集合以查找的中位数。找到它后的基准将在原始集
我的 Java 代码有问题...我已经盯着它看了 10 多个小时,但我就是找不到我犯的错误。 我的任务是实现“中位数的中位数”算法,将数组拆分为最大长度为 5 的数组并查找它们的中位数。然后查找这些中
我想通过以下示例了解“中位数的中位数”算法: 我们有 45 个不同的数字,分为 9 组,每组有 5 个元素。 48 43 38 33 28 23 18 13 8 49 44 39 34 29 24 1
CLRS 第 3 版第 9.3 节“最坏情况线性时间的选择”讨论了“选择”算法(由于 Blum、Floyd、Pratt、Rivest 和 Tarjan,有时称为 BFPRT 算法)用于查找 a 的中值
我正在搜索 John Tukey 算法,该算法使用 R 在我的线性回归上计算“阻力线”或“中值-中值线”。 邮件列表上的一位学生用这些术语解释了这个算法: "The way it's calculat
我的问题正如我在标题中指定的那样:test_median.cpp: In function ‘int main()’: test_median.cpp:26:27: error: cannot con
我正在实施quicksort,我希望将枢轴设置为中位数或三位数。这三个数字是第一个元素,中间元素和最后一个元素。 我能不能找到中位数呢?比较? median(int a[], int p, int r
自从最新的 R 更新以来,我得到了 Note summary.xmlImport: no visible global function definition for ‘median’ 在 CRAN
我使用 Medians of Medians 实现了第 nth_number 选择算法。在 wikipedia ,它指出它的空间复杂度是 O(1) 我必须将中位数存储在一个临时数组中,以便在这些中位数
中位数的中位数 方法在quicksort 类型的分区算法中非常流行,可以产生相当好的主元,从而均匀地分区数组。其逻辑在维基百科中给出为: The chosen pivot is both less t
我正在尝试将使用第一个元素作为基准的快速排序程序修改为使用三个中位数(第一个、最后一个和中间元素的中位数)作为基准的快速排序。然而,到目前为止,我的实现在测试时给出了 ArrayIndexOutOfB
我有一个关于 numpy.median() 在使用 numpy.ma.masked_array() 创建的屏蔽数组上的行为的问题。 正如我从调试自己的代码中了解到的那样,numpy.median()
给定两个具有唯一整数元素的数组,即元素在两个数组内或两个数组之间重复: 这是我编写的递归算法,需要帮助来破译我收到的错误消息。 public class Median { public static
在屏蔽数组的情况下,我对 numpy.median 的输出有点困惑。这是一个简单的示例(假设导入了 numpy - 我的版本是 1.6.2): >>> a = [3.0, 4.0, 5.0, 6.0,
有关问题的详情如下:。我期待中位数来一些价值,但它是未来0每一次,我总是得到一个不正确的模式。
有关问题的详情如下:。我期待中位数来一些价值,但它是未来0每一次,我总是得到一个不正确的模式。
我是一名优秀的程序员,十分优秀!