我试图从Java中未排序的数组中找到中位数。首先,我需要使用选择排序技术对数组进行排序,并且我不能使用任何Java库方法进行排序(因此没有Arrays.sort(array))。另外,我也不能对整个数组进行排序。我只能对尽可能多的元素进行排序,以找到数组的中位数。我想对于一个偶数组,它只是元素的一半加一(然后找到最后两个元素的平均值),而对于一个奇数组,它只会是元素的一半(最后一个是中位数)。
因此,我不确定如何在正确的时间停止选择排序,并从部分排序数组的最后一个或两个元素中找到中位数。以下是我到目前为止所拥有的内容。
import java.util.Arrays;
public class EfficientMedian
{
public static void median(int[] values)
{
int i, j, temp;
double median;
//selection sort below
for (i = 0; i < values.length - 1; i++)
{
for (j = i + 1; j < values.length; j++)
{
if (values[i] > values[j])
{
temp = values[i];
values[i] = values[j];
values[j] = temp;
}
}
}
if (values.length % 2 == 0) //if the array is even
{
median = values[values.length/2]; //just a placeholder
}
else //if the array is odd
{
median = values[values.length/2];
}
System.out.println(Arrays.toString(values));
System.out.println(median);
}
public static void main(String[] args)
{
int[] array1 = {567, 2, 600, 6, 601}, array2 = {45, 300, 46, 49};
median(array1);
median(array2);
}
}
第一个循环选择要排序的元素。如果你只需要中位数,你只需要排序values.length/2元素。所以你应该编辑这个:
for (i = 0; i < values.length - 1; i++)
{
...
}
到
for (i = 0; i < values.length/2; i++)
{
...
}
仅供参考,在“数组长度为奇数”的情况下,约定是对中间两个值进行平均。
求一个未排序数组的中值,我们可以对n个元素做O(nlogn)时间的min-heap,然后我们可以逐个抽取n/2个元素得到中值。但是这种方法需要O(nlogn)时间。 我们能在O(n)时间内通过某种方法做同样的事情吗?如果可以,那么请告诉或建议一些方法。
问题内容: 我在数据库字段中的序列化数组中存储项目列表(我在使用PHP / MySQL)。 我想要一个查询,该查询将选择所有包含数组中这些项目之一的记录。 像这样: 希望这是有道理的。 任何想法将不胜感激。 谢谢 问题答案: 因此,您是要使用MySQL搜索已通过serialize命令进行序列化并存储在数据库字段中的PHP数组吗?我的第一个反应是:天哪。我的第二个反应是:为什么?在 理智 的事情可以
这是来自coursera的算法课程中的实践问题;我被困了几个星期。 问题在于:<code>给定一个由n个不同的未排序元素x<sub>1</sub>组成的数组,x<sub>2</sub>,…,x<sub>n</次级>ε,加权中值是一个元素xk,对于该元素,值小于xk的所有元素的总权重最多为(总权重)/2,值大于xk的元素的总重量最多为(总重)/2。观察最多有两个加权值。演示如何在O(n)最坏时间内计
我想在未排序列表中找到近似中位数,我知道两种算法 算法1-快速选择 算法 2 - 中位数的中位数 我不能在我的项目中使用快速选择,因为它在最坏的情况下需要O(n^2。我听说过中位数,但我的同事建议它需要O(n)和一些常数因子,因此它的时间复杂度是Cn,常数因子比quickselect大。我想知道与中位数相关的常数因子是什么?为什么中位数不使用9元素的伪中位数?< br >或者,他们是否有任何其他算
我试图找到给定排序数组的最大K数。 ex:输入- 到目前为止,我编写的代码返回最大的K元素,但它需要返回最大的K数字。任何帮助都将不胜感激。
本文向大家介绍php选择排序法实现数组排序实例分析,包括了php选择排序法实现数组排序实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了php选择排序法实现数组排序的方法。分享给大家供大家参考。具体分析如下: 选择排序法的基本思路:直接用案例来说明吧,比如有一个数组$arr = array(2,6,3,9),从大到小排序。 第一次大循环:它首先假设$arr[0]为最大值,然后分别跟$