算法排序2-基本排序对比

版权声明:Firewine 的博客,想要转载请标明出处 https://blog.csdn.net/xyjworkgame/article/details/87930958


如果有任何的错误,请联系我,我将改正。

2. 索引对比框图

1.排序

  1. 算法官网 提供的代码,和 书本中的对比
算法名称 代码 原地排序 稳定 时间复杂度 空间复杂度 备注
选择排序 Selection.java 1 上述将N个元素排序的复杂度
插入排序 Insertion.java 介于N和N²之间 1 上述将N个元素排序的复杂度
冒泡排序 Bubble.java 1 上述将N个元素排序的复杂度
希尔排序 Shell.java N㏒N? N∧(6/5) 1 上述将N个元素排序的复杂度
归并排序 Merge.java N㏒N N 上述将N个元素排序的复杂度
快速排序 Quick.java N㏒N lgN 上述将N个元素排序的复杂度
三向快速排序 Quick3way 介于N和N㏒N之间 lgN 上述将N个元素排序的复杂度
堆排序 Heap.java N㏒N 1 上述将N个元素排序的复杂度

2. 优先队列

DATA STRUCTURE CODE INSERT DEL-MIN MIN DEC-KEY DELETE MERGE
数组 BruteIndexMinPQ.java 1 n n 1 1 n
二叉堆 IndexMinPQ.java log n log n 1 log n log n n
d-way heap IndexMultiwayMinPQ.java logd n d logd n 1 logd n d logd n n
二项堆 IndexBinomialMinPQ.java 1 log n 1 log n log n log n
斐波那契堆 IndexFibonacciMinPQ.java 1 log n 1 1 † log n log n

工具类

1. less ,exch 等方法实现

package com.sort.until;

/**
 * Created by IntelliJ IDEA.
 *
 * @version : 1.0
 * @auther : Firewine
 * @mail : [email protected]
 * @Program Name: Until .java
 * @Create : 2019-02-23-16:56
 * @Description :
 */
public class Until {

    public static boolean less(Comparable v, Comparable w){
        return v.compareTo(w) < 0;
    }
    public static void exch(Comparable[] a, int i,int j ){
        Comparable t = a[i];
        a[i] = a[j];
        a[j] = t;
    }
    public static boolean isSorted(Comparable[] a){
        for (int i=1; i < a.length; i++){
            if (less(a[i], a[i-1])){
                return false;
            }
        }
        return true;
    }
}

猜你喜欢

转载自blog.csdn.net/xyjworkgame/article/details/87930958
今日推荐