氣泡排序 和選擇排序 效能比較
阿新 • • 發佈:2019-01-25
根據9000長度的 隨機陣列比較:
氣泡排序花費時間96ms
選擇排序花費時間130ms
程式碼如下:
package testDemo;
import java.util.Arrays;
public class testArraySort {
public static void main(String[] args) {
//陣列長度
int length = 9000;
int[] array = createRandomArray(length);
//列印陣列
System.out.println("原陣列" +Arrays.toString(array));
//直接排序
/*long start = System.currentTimeMillis();
int[] selectSort = selectSort(array);
long end = System.currentTimeMillis();
System.out.println("選擇排序花費時間"+(end-start));
System.out.println("選擇排序後的陣列"+Arrays.toString(selectSort));*/
//呼叫氣泡排序
long start1 = System.currentTimeMillis();
int[] bubbleSort = bubbleSort(array);
long end1 = System.currentTimeMillis();
System.out.println("氣泡排序花費時間"+(end1-start1));
System.out.println("氣泡排序後的陣列"+Arrays.toString(bubbleSort));
}
public static int[] selectSort(int[] arr){
for(int x=0; x<arr.length-1; x++){
//為什麼y的初始化值是 x+1?因為每一次比較,都用x角標上的元素和下一個元素進 行比較。
for(int y=x+1; y<arr.length; y++){
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
return arr;
}
public static int[] bubbleSort(int[] arr){
for(int x=0; x<arr.length-1; x++){
for(int y=0; y<arr.length-x-1; y++){//-x:讓每次參與比較的元減。//-1:避免角標越界。
if(arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
return arr;
}
private static int[] createRandomArray(int length) {
int[] array = new int[length];
for(int i=0;i<array.length;i++){
array[i] = (int)(Math.random()*length);
}
return array;
}
}