Fork me on GitHub

常见排序算法总结

排序算法

首先推荐一个网站 Visualgo 中文版本这个网站上,可以动态显示排序等算法,以及表、栈、队、树、图等数据结构。这里只学习排序算法。

八大排序
八大排序

当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。

快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;

插入排序(直接插入排序Insert 希尔排序Shell’s 二分插入排序binary)

straightInsert逻辑:把我赋给一个临时变量,在我前面的依次和我比较,如果比我大,赋值,继续找前一个,如果比我小这个位置就是我的。

希尔排序Shell:

binaryInsert:

InsertSort

选择排序 (简单选择排序SimpleSelect 堆排序Heap)

SimpleSelect: 先找到最小的再和我做交换;

Heap:
SelectSort

交换排序(冒泡Bubble 快速排序Quick)

Bubble: 只要小的数字就和当前的交换,小的数字往上走,

Quick:

归并排序(Merge)

基数/桶排序(RadixSort)(bucketSort)

基数: 个位 十位 百位 每循环一次都更新数据,拆分每位来排序

桶:先定义小到最大的桶,记录每个桶的次数和相应的位置。根据桶信息依次取出。

计数排序(Count)

八大排序算法
各种排序算法的分析及java实现
常用排序算法稳定性分析
基于非比较的排序:计数排序(countSort),桶排序(bucketSort),基数排序(radixSort)
常见排序算法小结

文章目录
  1. 1. 排序算法
    1. 1.0.1. 插入排序(直接插入排序Insert 希尔排序Shell’s 二分插入排序binary)
    2. 1.0.2. 选择排序 (简单选择排序SimpleSelect 堆排序Heap)
    3. 1.0.3. 交换排序(冒泡Bubble 快速排序Quick)
    4. 1.0.4. 归并排序(Merge)
    5. 1.0.5. 基数/桶排序(RadixSort)(bucketSort)
    6. 1.0.6. 计数排序(Count)
,