1. 程式人生 > >氣泡排序 和選擇排序 效能比較

氣泡排序 和選擇排序 效能比較

根據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; } }