public /*double[][]*/ void getFrequency2 (String fileName, int loop){
String row;
double[] tempLoss;
double[][] tempFreq;
try{
File file = new File(fileName);
FileReader freader = new FileReader(file);
BufferedReader reader = new BufferedReader(freader);
//hilfsklasse zum schreiben einer datei... mit Methode addToFile()
FileMaster myTempFreqFileMaster = new FileMaster("C:\\Diplomarbeit/Daten/20061016/Tempfreq",true,false);
for (int i = 0; i < loop; i++) {
tempLoss = new double[1000000];
for (int j = 0; j < tempLoss.length; j++){
row = reader.readLine();
//System.out.println(j);
if (row != null){
StringTokenizer token = new StringTokenizer(row, /*";"*/ ",");
tempLoss[j] = Double.parseDouble(token.nextToken());
}
else{
break;
}
}
tempFreq = fastFreq(tempLoss);
myTempFreqFileMaster.addToFile(tempFreq);
System.out.println(i);
}
}
catch (FileNotFoundException e) {
System.err.println("Datei nicht gefunden" + e.getMessage());
} catch (IOException e) {
System.err.println("Lesefehler" + e.getMessage());
}
}
private double[][] fastFreq (double[] tempLoss){
int size = 1000000;
int runner = 0;
double[][] tempFreq = new double[size][2];
quicksort(tempLoss, 0, tempLoss.length-1);
tempFreq[0][0] = tempLoss[0];
tempFreq[0][1] = 1;
for(int i = 1; i < tempLoss.length; i++){
//System.out.println(runner);
if(tempFreq[runner][0] == tempLoss[i]){
tempFreq[runner][1]++;
}
else{
if(size < runner-1){
size = 2*size;
double[][] tempFreq2 = new double[size][2];
for(int j = 0; j <= runner; j++){
tempFreq2 [j][0] = tempFreq [j][0];
tempFreq2 [j][1] = tempFreq [j][1];
}
tempFreq = tempFreq2;
tempFreq2 = null;
}
runner++;
tempFreq[runner][0] = tempLoss[i];
tempFreq[runner][1] = 1;
}
}
return tempFreq;
}