</>算法手记
CODE · THINK · SHARE

让算法更简单,
让代码更有趣。

一个专注于计算机基础与编程实践的个人博客。记录排序算法的原理、思路与实现,分享编程知识,在持续学习中积累和成长。

function sort(array) {
  for (let i = 0; i < array.length; i++) {
    // 持续比较、交换与调整
    if (needSwap(array[i])) {
      swap(array, i);
    }
  }
  return array;
}

// 学习算法,从理解每一步开始
Algorithm Library

十大经典排序算法

从基础入门到高效排序,循序渐进地理解算法。

共 10 种算法
01 / SORT入门基础

冒泡排序(Bubble Sort)

重复比较相邻元素,将较大的元素逐步交换到序列末端。思路直观,适合用来理解排序的基本过程。

平均 O(n²)最坏 O(n²)稳定
02 / SORT入门基础

选择排序(Selection Sort)

每一轮从未排序区间中选出最小元素,放到已排序区间的末尾。交换次数较少,但比较次数固定。

平均 O(n²)最坏 O(n²)不稳定
03 / SORT入门基础

插入排序(Insertion Sort)

将当前元素插入前方已排序区间的合适位置。对于数据量较小或基本有序的数组,表现通常不错。

平均 O(n²)最好 O(n)稳定
04 / SORT进阶算法

希尔排序(Shell Sort)

通过逐步缩小增量进行分组插入排序,让元素更快地移动到最终位置。性能与增量序列的选择有关。

依赖增量序列原地排序
05 / SORT分治思想

归并排序(Merge Sort)

采用分治策略,将序列拆分为更小的子序列,分别排序后再合并。时间复杂度稳定,适合处理大规模数据。

平均 O(n log n)空间 O(n)稳定
06 / SORT高效排序

快速排序(Quick Sort)

选取基准元素,将序列划分为大小两侧,再递归处理子区间。实际应用广泛,通常具有较好的平均性能。

平均 O(n log n)最坏 O(n²)不稳定
07 / SORT高效排序

堆排序(Heap Sort)

利用堆这种数据结构反复取出最大或最小元素。时间复杂度有保证,并且可以在原数组上完成排序。

平均 O(n log n)空间 O(1)不稳定
08 / SORT非比较排序

计数排序(Counting Sort)

统计每个键值出现的次数,再根据统计结果确定元素位置。适用于取值范围不大、以整数为主的数据。

时间 O(n + k)空间 O(n + k)可稳定实现
09 / SORT非比较排序

桶排序(Bucket Sort)

将数据分配到多个桶中,对桶内元素分别排序,最后按桶的顺序合并。适合数据分布较为均匀的场景。

平均 O(n + k)依赖数据分布
10 / SORT非比较排序

基数排序(Radix Sort)

按照数字的个位、十位等关键字逐位排序,逐步得到最终有序序列。适合位数有限的整数或定长字符串。

时间 O(d × (n + k))稳定
没有找到匹配的排序算法,试试其他关键词。
About This Blog

关于算法手记

这里是一个个人技术学习与记录空间,主要记录排序算法、数据结构、编程语言及日常开发中的实践经验。