算法排序2-基本排序对比
如果有任何的错误,请联系我,我将改正。
2. 索引对比框图
1.排序
- 算法官网 提供的代码,和 书本中的对比
算法名称 | 代码 | 原地排序 | 稳定 | 时间复杂度 | 空间复杂度 | 备注 |
---|---|---|---|---|---|---|
选择排序 | Selection.java | ✔ | N² | 1 | 上述将N个元素排序的复杂度 | |
插入排序 | Insertion.java | ✔ | ✔ | 介于N和N²之间 | 1 | 上述将N个元素排序的复杂度 |
冒泡排序 | Bubble.java | ✔ | ✔ | 1 | N² | 上述将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 : 1451661318@qq.com
* @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;
}
}