0
選択とバブルソートに同じ時間がかかるのはなぜですか?あなたが二回duration
を印刷しているので、あなたがduration1
を使用すべき第2の印刷では、バブルソートと選択ソートを使用してソートするのにかかる時間
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));
}
}
バブルの時間= "+(継続時間* 1.0E-9)'はバブルの時間= "+(継続時間* 1.0E-9)にする必要があります。第2に、数百万のサンプルを使用する – Shark
ベンチマークを1回実行することは、JIT以外のものをベンチマークすることはまずありません。どのパラメータを使用していますか?数百万? –
大きなサンプルでは、パフォーマンスのスピードの違いがわかります。これに関する議論については、http://stackoverflow.com/questions/10428336/insertion-sort-better-than-bubble-sortを参照してください。 – dreamer