Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何分析图表数据以找到TOP?_Java_Arrays_Graph - Fatal编程技术网

Java 如何分析图表数据以找到TOP?

Java 如何分析图表数据以找到TOP?,java,arrays,graph,Java,Arrays,Graph,我需要从一些givin数据(图表数据)中找到severel tops。数据被放入一个数组中 顶部的定义是,在顶部之前的某个间隔内有较低或相等的元素,在顶部之后的某个间隔内有较低或相等的元素。我想保持简单,因为我不是专家 我正在用不同的工具分析一些股票图表。我希望你能帮助我,或者提供一些其他信息来处理这个问题:)如果阵列不是太大,暴力解决方案可能适合。您只需迭代元素,并检查您为每个元素描述的谓词: 伪代码: for (int i = 0; i < array.length; i++) {

我需要从一些givin数据(图表数据)中找到severel tops。数据被放入一个数组中

顶部的定义是,在顶部之前的某个间隔内有较低或相等的元素,在顶部之后的某个间隔内有较低或相等的元素。我想保持简单,因为我不是专家


我正在用不同的工具分析一些股票图表。我希望你能帮助我,或者提供一些其他信息来处理这个问题:)

如果阵列不是太大,暴力解决方案可能适合。您只需迭代元素,并检查您为每个元素描述的谓词:

伪代码:

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个以上的顶部的值大致相同,是否打印该值?