「java区间算法」数据区间划分算法

博主:adminadmin 2022-12-09 05:03:09 95

本篇文章给大家谈谈java区间算法,以及数据区间划分算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java怎样将集合中的数值数据分区间统计个数:例如(0-1000)有几个人数据,1000-2000有几个数据

集合分组统计处理, 实现的方法很多,简单的写几种方法供参考;(理解后,自行扩展完善)

方法一:(Java8流处理粗略版) 该版本存在的问题:有些区间没有数据,就不打印显示该区间

import java.util.*;

import java.util.stream.*;

public class NumberDemo {

public static void main(String[] args) {

ArrayListInteger list = new ArrayListInteger();

int numbers = 10;// 集合里数字的个数

int space = 1000;// 区间的间隔

// 给集合里添加数字

Random rd = new Random();

for (int i = 0; i  numbers; i++) {

list.add(rd.nextInt(5000)); // 集合里每个数字的范围是0~4999

}

funStream(list, space);

}

private static void funStream(ArrayListInteger list, int space) {

// 使用流处理 把 数字分组

MapString, ListInteger map = list.stream().collect(Collectors.groupingBy((num) - {

return "区间:[" + num / space * space + "," + (num / space + 1) * space + ")";// 分组规则

}));

map.forEach((k,v)-{

System.out.println(k);

System.out.println("\t"+v.size()+"个数据");

});

}

}

方法二:(Java8流处理详细版) 就算有的区间是0个数据,照样打印出来

import java.util.*;

import java.util.stream.*;

public class NumberDemo2 {

public static void main(String[] args) {

ArrayListInteger list = new ArrayListInteger();

int numbers = 10;// 集合里数字的个数

int space = 1000;// 区间的间隔

// 给集合里添加数字

Random rd = new Random();

for (int i = 0; i  numbers; i++) {

list.add(rd.nextInt(5000)); // 集合里每个数字的范围是0~4999

}

funStream(list, space);

}

private static void funStream(ArrayListInteger list, int space) {

// 使用流处理 把 数字分组

MapInteger, ListInteger map = list.stream().collect(Collectors.groupingBy((num) - {

return num / space;// 分组规则

}));

// 获取集合里的最大值

OptionalInteger maxop = list.stream().collect(Collectors.maxBy(Integer::compareTo));

int max = maxop.orElse(0);

// 计算出区间的数量

int groups = max % space == 0 ? max / space : max / space + 1;

// 打印结果

for (int i = 0; i  groups; i++) {

System.out.println("区间:[" + i * space + "," + (i + 1) * space + ")");

System.out.println("\t有" + (map.get(i)==null?0:map.get(i).size()) + "个数据");

// System.out.println("\t"+map.get(i));//把数据打印出来

}

}

}

方法三:(比较传统的方法)

import java.util.*;

public class NumberDemo3 {

public static void main(String[] args) {

ArrayListInteger list = new ArrayListInteger();

int numbers = 10;// 集合里数字的个数

int space = 1000;// 区间的间隔

//给集合里添加数字

Random rd = new Random();

for (int i = 0; i  numbers; i++) {

list.add(rd.nextInt(5000)); // 集合里每个数字的范围是0~4999

}

fun(list,space);

}

private static void fun(ArrayListInteger list, int space) {

Collections.sort(list);//排序

int max= list.get(list.size()-1);//取得最大值

int groups = max % space == 0 ? max / space : max / space + 1;//取得区间的数量

HashMapInteger,ArrayListInteger map=new HashMapInteger, ArrayListInteger();//存区间和该区间的数字

for (int i = 0; i  groups; i++) {

map.put(i, new ArrayList());

}

//把元素添加到指定的区间

for (int i = 0; i  list.size(); i++) {

map.get(list.get(i)/space).add(list.get(i));

}

//打印结果

for (int i = 0; i  groups; i++) {

System.out.println("区间:[" + i * space + "," + (i + 1) * space + ")");

System.out.println("\t有"+ map.get(i).size()+"个数据");

//System.out.println("\t"+map.get(i));//把数据打印出来

}

}

}

测试效果如下

区间:[0,1000)

有5个数据

区间:[1000,2000)

有0个数据

区间:[2000,3000)

有1个数据

区间:[3000,4000)

有2个数据

区间:[4000,5000)

有2个数据

java 算法 求 区间 之间的间断值之和

首先我认为你需要一个区间之间的合并操作,假设你有一个区间类,成员变量有上限和下限,为这个区间类增加一个合并函数,比如(1,5)和(2,4)就合并为(1,5),如果是(1,5)和(2,6)就合并为(1,6)。

当然这里涉及一个不能合并的区间,也就说,这个合并函数具有返回值boolean,返回值表示能否成功合并,不能要返回false。

然后,算法的输入肯定是一个区间数组,数组里是所有的区间。在算法中维护一个新数组,这个数组把能合并的区间都合并在一起,新数组中要保证任意两个区间都是不能合并的,也就是说,遍历输入的数组的每一个区间,在新数组中寻找一个可以合并的区间,如果找不到,则在新数组中单独占一个位置,在每进行一次成功的合并之后,都要搜索新数组,保证新数组的不可合并性。

最后,当搜索输入数组完毕,新数组也建立成功后,再分别计算每个新数组中区间的间断值再求和就是结果了。

Java实现在区间【a,b】内找出一些数满足可以被一个整数c整除,统计区间内一共有多

class ForTest3

{

public static void main(String[] args)

{

int count = 0;

for(int x=1; x=100; x++)

{

if(x%7==0)

//System.out.println("x="+x);

count++;

}

System.out.println("count="+count);

/*

计数器思想。

通过一个变量记录住数据的状态变化。

也许通过循环完成。

*/

这是一个例子 你改改

java 统计数字所属区间

int array[] = {1,2,101,220,1100,2300,1,10,230,220,2,1100};

int arr2[]=null; //用数组存储array数组元素在各个区间个数

int max=0;//初始化最大值;

//循环把数组最大值找出来

for (int i = 0; i  array.length; i++) {

if(array[i]max){

max=array[i];

}

}

System.out.println("max:"+max);

//计算区间个数,如何最大值不能整除100 要增加一个区间

if(max%100!=0){

arr2=new int[(max/100+1)];

}else{

arr2=new int[(max/100)];

}

//循环array数组元素

for (int i = 0; i  array.length; i++) {

//循环arr2数组

for (int j = 0; j  arr2.length; j++) {

//判断array数组元素 在那个区间段

if(array[i]=j*100+1  array[i]=(j+1)*100 ){

arr2[j]++;

}

}

}

for (int i = 0; i  arr2.length; i++) {

if(i==max/100){

System.out.println("["+((i*100)+1)+"-"+(max)+"]:"+arr2[i]);

}else{

System.out.println("["+((i*100)+1)+"-"+((i+1)*100)+"]:"+arr2[i]);

}

}

随便写的,你尝试下吧

java入门 排序问题 指定区间排序Arrays.sort(ar,0,n)

for(int i=0;in;i++)

{

ar[i]=cin.nextInt();

Arrays.sort(ar,0,n); //原因出在这句的位置,等于每输入1个数字就排序1次n个数

/*

5 //输入5个数

输入 9 2 1 3 5 变成

9(前5个排序) 2(前5个排序) 1(前5个排序) 3(前5个排序) 5(前5个排序)

在9输入后数据为[9,0,0,0,0...0,0,0] ,把前五个排序得[0,0,0,0,9,0...0,0]*/

for(int i=0;in;i++)

{

ar[i]=cin.nextInt();

}

Arrays.sort(ar,0,n);//改到for之外才符合设计意图

接下来都错了

}

java能用算法实现找到这条线最大的跌幅的区间吗?

最大跌幅应该是16,区间4-14.

你这个问题就等于:

x = a[i]  - a[j]    (ij)

求x的最大值。

public class FindMaxDiff {

public int findMaxDiff(int[] p) {

int max = p[0];

int diff = 0;

int n = p.length;

for (int i = 0; i  n; i++) {

if (max  p[i])

max = p[i];

if (max - p[i]  diff)

diff = max - p[i];

}

return diff;

}

public static void main(String[] args) {

int a[] = new int[] { -3, -2, -3, -6, -1, -1, 5, 3, 2, -3, -2, -5, -2,

-3, -11, 1, 3 };

FindMaxDiff f = new FindMaxDiff();

int result = f.findMaxDiff(a);

System.out.println(result);

}

}

java区间算法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据区间划分算法、java区间算法的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-09,除非注明,否则均为首码项目网原创文章,转载请注明出处。