排序算法耗時測試

排序算法耗時測試

  • 影響因子 電腦的CPU
  • 隨機的數據(比較小)
  • 結果可參考

普通排序算法 冒泡排序

    /**
     * 冒泡排序
     * 
     * @param arr
     */
    public static void bubbleSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

普通排序算法 選擇排序

/**
     * 選擇排序
     * 
     * @param arr
     */
    private static void selectSort(int[] arr) {
        int length = arr.length;
        int temp = 0;
        int minIndex;
        for (int j = 0; j < length - 1; j++) {
            minIndex = j;
            for (int i = j; i < length - 1; i++) {
                if (arr[minIndex] > arr[i + 1]) {
                    minIndex = i + 1;
                }
            }
            temp = arr[minIndex];
            arr[minIndex] = arr[j];
            arr[j] = temp;
        }
    }

快排

/**
     * 快速排序
     * @param arr
     * @param low
     * @param high
     */
    public static void quickSort(int[] arr, int low, int high) {
        int i, j, temp, t;
        if (low > high) {
            return;
        }
        i = low;
        j = high;
        temp = arr[low];

        while (i < j) {
            while (temp <= arr[j] && i < j) {
                j--;
            }
            while (temp >= arr[i] && i < j) {
                i++;
            }
            if (i < j) {
                t = arr[j];
                arr[j] = arr[i];
                arr[i] = t;
            }

        }
        arr[low] = arr[i];
        arr[i] = temp;
        quickSort(arr, low, j - 1);
        quickSort(arr, j + 1, high);
    }

調用

 public static void main(String[] args) {
        int[] arr = new int[1000000];
        for (int i = 0; i < 1000000; i++) {
            Random random = new Random();
            int addNum = random.nextInt(200);
            arr[i] = addNum;
        }

        long startTime = System.currentTimeMillis();
        quickSort(arr, 0, arr.length - 1);
        // bubbleSort(arr);
        //selectSort(arr);
        long endTime = System.currentTimeMillis();
        System.out.print("\n sort time is :" + (endTime - startTime) + "\n");
       
    }

統計結果(毫秒值)

算法 1000 10000 100000 1000000
快速排序 0 2 28 565
選擇排序 2 49 4701 474916(卡死h好久)
冒泡排序 3 98 12838 沒敢測試
發佈了48 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章