Java 如何分析图表数据以找到TOP?
我需要从一些givin数据(图表数据)中找到severel tops。数据被放入一个数组中 顶部的定义是,在顶部之前的某个间隔内有较低或相等的元素,在顶部之后的某个间隔内有较低或相等的元素。我想保持简单,因为我不是专家Java 如何分析图表数据以找到TOP?,java,arrays,graph,Java,Arrays,Graph,我需要从一些givin数据(图表数据)中找到severel tops。数据被放入一个数组中 顶部的定义是,在顶部之前的某个间隔内有较低或相等的元素,在顶部之后的某个间隔内有较低或相等的元素。我想保持简单,因为我不是专家 我正在用不同的工具分析一些股票图表。我希望你能帮助我,或者提供一些其他信息来处理这个问题:)如果阵列不是太大,暴力解决方案可能适合。您只需迭代元素,并检查您为每个元素描述的谓词: 伪代码: for (int i = 0; i < array.length; i++) {
我正在用不同的工具分析一些股票图表。我希望你能帮助我,或者提供一些其他信息来处理这个问题:)如果阵列不是太大,暴力解决方案可能适合。您只需迭代元素,并检查您为每个元素描述的谓词: 伪代码:
for (int i = 0; i < array.length; i++) {
boolean isPick = true;
for (int j = max(0,i-interval; j < min(array.length,i+interval; j++)
if (array[j] > array[i]) isPick=false;
//do something with the pick, isPick indicates if it is a pick or not.
for(inti=0;iarray[i])isPick=false;
//对拾取执行某些操作,iPick将指示它是否为拾取。
一个启发式的解决方案,你可能要考虑数组是否很大,
< p>这里有一个工作例子:import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
public class Test
{
static final int[] graph = new int[100]; static { randomGraph(); }
static final int window = 3;
public static void main(String[] args) {
final List<Integer> tops = new ArrayList<Integer>();
for (int i = 0; i < graph.length; i++)
if (max(i-window, i) <= graph[i] && graph[i] >= max(i+1, i+1+window))
tops.add(i);
System.out.println(tops);
}
static int max(int start, int end) {
int max = Integer.MIN_VALUE;
for (int i = Math.max(start, 0); i < Math.min(end, graph.length); i++)
max = Math.max(max, graph[i]);
return max;
}
private static void randomGraph() {
final Random r = new Random();
for (int i = 1; i < graph.length; i++)
graph[i] = graph[i-1] + r.nextInt(10) - 5;
System.out.println(Arrays.toString(graph));
}
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.Random;
公开课考试
{
静态最终整数[]图=新整数[100];静态{randomGraph();}
静态最终整数窗口=3;
公共静态void main(字符串[]args){
最终列表顶部=新的ArrayList();
对于(int i=0;i
非常感谢您的点评..对处理数组中的数据有什么建议吗?例如,我可以说:如果一行中有3个或3个以上的顶部的值大致相同,是否打印该值?