📄 test.java
字号:
import java.util.LinkedList;
import java.util.Date;
public class Test
{
//float [][]matrix = new float[16][16];
private static double matrix[][] = {{1},
{0,1},
{0,0,1},
{0,0,0.4,1},
{0,0.8,0,0,1},
{0.5,0,0.2,0.2,0,1},
{0,0.8,0,0,0.4,0,1},
{0.4,0.2,0.2,0.5,0,0.8,0,1},
{0,0.4,0,0.8,0.4,0.2,0.4,0,1},
{0,0,0.2,0.2,0,0,0.2,0,0.2,1},
{0,0.5,0.2,0.2,0,0,0.8,0,0.4,0.2,1},
{0,0,0.2,0.8,0,0,0,0,0.4,0.8,0,1},
{0.8,0,0.2,0.4,0,0.4,0,0.4,0,0,0,0,1},
{0,0.8,0,0.2,0.4,0,0.8,0,0.2,0.2,0.6,0,0,1},
{0,0,0.4,0.8,0,0.2,0,0,0.2,0,0,0.2,0.2,0,1},
{0.6,0,0,0.2,0.2,0.8,0,0.4,0,0,0,0,0.4,0.2,0.4,1}};
public static double GetNamedValue(int mun)//取第m小的数据
{
//System.out.println("开始取小数据");
//int [][] a =new int [26000][26000];
double temp = 100 ;
double []array = new double[16*16];
array[0] = matrix[0][0];
int count = 1; //一维数据计数
for(int i = 0;i < 16;i++)
{
for(int j = 0;j <= i;j++)
{
if(!contain(array,count,matrix[i][j]))
{
array[count] = matrix[i][j];
count++;
}
}
}
for(int i = 0;i < count;i++)
{
for(int j = i+1;j < count;j++)
if(array[j] < array[i])
{
double t = array[i];
array[i] = array[j];
array[j] = t;
}
}
//System.out.println("count="+count);
//for(int i = 0;i < mun;i++)
// System.out.print(array[i]+" ");
temp = array[mun];
//System.out.println("safsdf小数据完毕ssfsf");
return temp;
}
public static boolean contain(double a[],int m,double n)
{
boolean flag = false;
for(int i = 0;i < m;i++)
{
if(a[i] == n)
{
flag = true;
//return flag;
break;
}
}
return flag;
}
public static void Clustering()
{
LinkedList []list = new LinkedList[16];
int n = 0; //记录list的数目
double bigvlaue = GetNamedValue(4);
boolean flag = true; //是否创建list
for(int i = 0;i < 16;i++)
{
System.out.println("n="+n);
if(i == 0)
{
list[n] = new LinkedList();
//list[n].add(new Integer(i));
for(int j = i;j < 16;j++)
{
if(matrix[j][i] >= bigvlaue)
{
list[n].add(new Integer(j));
}
}
n++;
continue;
}
else
{
for(int m = 0;m < n;m++)
{
if(list[m].contains(new Integer(i)))
{
flag = false;
break;
}
flag = true;
}
if(flag)
{
System.out.println("I am here!");
list[n] = new LinkedList();
//list[n].add(new Integer(i));
for(int j = i;j < 16;j++)
{
if(matrix[j][i] >= bigvlaue)
{
list[n].add(new Integer(j));
}
}
n++;
UnitTwoLink(list,n);
}
}
}
//UnitTwoLink(list,n);
for(int j = 0;j < n;j++)
{
//if(!list[j].isEmpty())
System.out.println(list[j]);
}
//System.out.println("Clustering ok");
}
public static void UnitTwoLink(LinkedList list[],int n)
{
//int flag = 0;
for(int i = 0;i < n-1;i++)
{
for(int j = 0;j < list[i].size();j++)
{
Object object = list[i].get(j);
if(list[n-1].contains(object))
{
list[i].addAll(list[n-1]);
//list[n-1].removeAll(list[n-1]);
list[n-1].clear();
n--;
for(int a = 0;a < list[i].size()-1;a++) //合并相同数据
{
for(int b = a+1;b < list[i].size();b++)
{
if(list[i].get(a).equals(list[i].get(b)))
list[i].remove(b);
}
}
return ;
}
}
}
}
public static void main(String [] args)
{
Date date = new Date();
long startTime = date.getTime();
System.out.println(startTime);
double dd = GetNamedValue(4);
System.out.println("xiao"+dd+"shu");
Clustering();
Date newDate = new Date();
long endTime = newDate.getTime();
System.out.println(endTime);
System.out.println(endTime - startTime+"s");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -