Warum bekomme ich die gleiche Zeit für die Auswahl und Blasensortieren. All meine Art Methoden funktionieren einwandfrei, aber ich genaue Zeit für Blase und Auswahl sortiert genommen bekommen ..Zeit für die Sortierung mit Blasensortierung und Sortierung Sortierung
import java.util.Scanner;
public class sorting{
public static void selectionsort(double[] list, int a, int b, double temp, int length){
double min;
int index=0;
/*for(int p=0;p<list.length;p++){
System.out.println("input="+list[p]);
}*/
int n=0;
int status=0;
while(n<length){
min=list[n];
for(int j=n;j<(length-1);j++){
if(list[j+1]<min){
min=list[j+1];
index=(j+1);
status=1;
}
}
if(min!=list[n]){
temp=list[n];
//System.out.println("Original val="+temp);
//System.out.println("Before n="+n);
list[n]=min;
//System.out.println("After n="+n);
//System.out.println("switch val="+list[n]);
list[index]=temp;
//System.out.println("new switch val at="+index);
n++;
//System.out.println("Updated");
/*for(int k=0;k<list.length;k++){
System.out.println("Output="+list[k]);
}*/
}
else
n++;
}
//System.out.println("Done selection:");
/*for(int k=0;k<list.length;k++){
System.out.println("Output="+list[k]);
}*/
}
public static void bubblesort(double[] list, int a, int b, double temp, double length){
/*for(int p=0;p<list.length;p++){
System.out.println("inputb="+list[p]);
}*/
while(length>=0){
for(int k=0;k<=(length-2);k++){
if(list[k]>list[k+1]){
temp=list[k+1];
list[k+1]=list[k];
list[k]=temp;
}
}
length--;
}
//System.out.println("Done bubble:");
/*for(int k=0;k<list.length;k++){
System.out.println("Outputb="+list[k]);
}*/
}
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("Lower bound");
int a=in.nextInt();
System.out.println("High bound");
int b=in.nextInt();
System.out.println("how many elements?");
int n=in.nextInt();
double[] list=new double[n];
double[] sel=new double[n];
double[] bub=new double[n];
for(int i=0;i<list.length;i++){//intializes the array
list[i]=((Math.random()*(b-a)))+a;
}
for(int h=0;h<sel.length;h++){//selection
sel[h]=list[h];
}
for(int l=0;l<bub.length;l++){//bubble
bub[l]=list[l];
}
double temp=0.0;
int length=list.length;
long startTime = System.nanoTime();
selectionsort(sel,a,b,temp,length);
long duration = System.nanoTime() - startTime;
System.out.println("Time for selection="+(duration*1.0E-9));
long startTime1 = System.nanoTime();
bubblesort(bub,a,b,temp,length);
long duration1 = System.nanoTime() - startTime1;
System.out.println("Time for bubble="+(duration*1.0E-9));
}
}
Ich fand Ihren Fehler ... '" Zeit für Blase = "+ (Dauer * 1.0E-9)' sollte '" Zeit für Blase = "+ (Dauer1 * 1.0E-9)' sein. Zweitens, verwenden Sie ein paar Millionen Stichproben. – Shark
In erster Linie, ein Benchmark einmal auszuführen ist unwahrscheinlich, etwas außer dem JIT zu benchmarken. Mit welchen Parametern laufen Sie? Ein paar Millionen? –
Sie werden den Unterschied der Leistungsgeschwindigkeit bei einem größeren Beispiel sehen. siehe http://stackoverflow.com/questions/10428336/insertion-sort-better-than-bubble-sort für eine Diskussion dazu. – dreamer