Java---高速ソートとバブルソートの比較
6487 ワード
高速ソートとバブルソートの比較
テストの結果、急速なソートサイクル回数は明らかに泡のソートより多くのくだらない話を少なくして、直接コードに行きます
public class BubbleCompareQuick {
int array[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15, 35,25, 53, 51 };
int recycleTime = 0;
StringBuilder sb=new StringBuilder();
//
@Test
public void testQuick() {
quickSort(array, 0, array.length-1);
System.out.println(" >>"+recycleTime);
System.out.println("=========================");
getResult(array);
}
//
@Test
public void testBubble() {
int tmp=0;
for(int i=0;i<array.length;i++){
for(int j=i;j<array.length;j++){
if(array[i]>array[j]){
tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
recycleTime++;
}
}
System.out.println(" >>"+recycleTime);
System.out.println("=========================");
getResult(array);
}
public void quickSort(int array[],int left,int right){
if(leftint middle=getMiddle(array, left, right);
quickSort(array, left, middle-1);
quickSort(array, middle+1, right);
}
}
public int getMiddle(int[] array,int left,int right){
int tmp=array[left];
while(leftwhile(leftarray[right]>=tmp){
right--;
recycleTime++;
}
array[left]=array[right];
while(leftarray[left]<=tmp){
left++;
recycleTime++;
}
array[right]=array[left];
recycleTime++;
}
array[left]=tmp;
return left;
}
public void getResult(int array[]){
int len=sb.length();
sb.delete(0, len);
sb.append("[");
for(int i=0;i<array.length;i++){
sb.append(array[i]+",");
}
sb.deleteCharAt(sb.length()-1);
sb.append("]");
System.out.println(sb.toString());
}
}
JunitでtestBubble()バブルソートを実行した結果:バブルソートサイクル>>406[4,5,12,13,15,17,18,23,25,27,34,34,35,38,49,49,51,53,54,56,62,64,65,76,78,97,98,99]
JunitでtestQuick()クイックソートを実行した結果:クイックソートサイクル>>149[4,5,12,13,15,17,18,23,25,27,34,34,35,38,49,49,51,53,54,56,62,64,65,76,78,97,98,99]
参照リンク:http://www.cnblogs.com/qqzy168/archive/2013/08/03/3219201.html