快速排序、堆排序、归并排序简单比较

快速排序、堆排序和归并排序都是平均时间复杂度为O(nlog(n))的算法。有关其原理介绍已经有很多。今天写了个简单的实现,用JFreeChart做了个简单的性能比较。懒得保存在本地,上传一下,以供日后回看。


import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.data.category.DefaultCategoryDataset;

import java.awt.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        int time = 400;
        StandardChartTheme mChartTheme = new StandardChartTheme("CN");
        mChartTheme.setLargeFont(new Font("黑体", Font.BOLD, 20));
        mChartTheme.setExtraLargeFont(new Font("宋体", Font.PLAIN, 15));
        mChartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 15));
        ChartFactory.setChartTheme(mChartTheme);
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        for (int i=0; i=0; i--) {
            heapAdjust(arr, i, len-1);
        }
        // 然后,循环梳理最大堆。每次梳理,都会将最大元素放到数组末尾
        int end = len-1;
        for (int i=0; i right) {
            return;
        }
        int i = left;
        int j = right;
        int base = arr[i];
        while (i != j) {
            // 先从右边开始找
            while(arr[j]>=base && i

结果如图: 快速排序、堆排序、归并排序简单比较_第1张图片

快速排序、堆排序、归并排序简单比较_第2张图片

你可能感兴趣的:(java,排序)