问学姐考研网 可视化 算法
5 20 50
中等

排序可视化

排序过程

算法详情

直接插入排序 (Insertion Sort)

插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

时间复杂度

O(n²)

空间复杂度

O(1)

稳定性

稳定

适用于小规模数据或基本有序的数据。

算法代码

// 直接插入排序代码
function insertionSort(arr) {
  const n = arr.length;
  for (let i = 1; i < n; i++) {
    let key = arr[i];
    let j = i - 1;
    
    // 将大于key的元素向后移动
    while (j >= 0 && arr[j] > key) {
      arr[j + 1] = arr[j];
      j--;
    }
    
    // 插入key
    arr[j + 1] = key;
  }
  return arr;
}

算法比较

算法 平均时间复杂度 最坏时间复杂度 空间复杂度 稳定性 适用场景
直接插入排序
O(n²) O(n²) O(1) 稳定 小规模数据或基本有序数据
折半插入排序
O(n²) O(n²) O(1) 稳定 小规模数据,减少比较次数
希尔排序
O(n log n) 到 O(n²) O(n²) O(1) 不稳定 中等规模数据
冒泡排序
O(n²) O(n²) O(1) 稳定 教学演示
快速排序
O(n log n) O(n²) O(log n) 不稳定 大规模数据
简单选择排序
O(n²) O(n²) O(1) 不稳定 小规模数据
堆排序
O(n log n) O(n log n) O(1) 不稳定 大规模数据,需要稳定性能
归并排序
O(n log n) O(n log n) O(n) 稳定 大规模数据,需要稳定性
基数排序
O(k·n) O(k·n) O(n+k) 稳定 整数排序