排序算法耗时测试

排序算法耗时测试

  • 影响因子 电脑的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 没敢测试
发布了45 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u010436867/article/details/103988626
今日推荐