在线排序算法可视化演示工具

自定义算法 API
// === 比较与交换(带动画与音效)===
await compare(i, j)          // 比较 array[i] 和 array[j],返回 true 表示前者 > 后者
await swap(i, j)             // 交换并显示动画

// === 标记与等待 ===
await mark(i, [j], [type])   // 标记颜色: 'compare'(红), 'swap'(橙), 'pivot'(紫)
await sleep(ms)              // 等待毫秒

// === 数组查询(无动画)===
getLength()                  // 返回当前数组长度
getValue(i)                  // 获取 array[i]
getArrayCopy()               // 返回数组浅拷贝

// === 数组修改(立即刷新画布)===
setValue(i, val)             // 设置 array[i] = val
setArray(newArr)             // 整体替换数组
push/pop/shift/unshift       // 增删元素
splice/fill/reverse/sort     // 其他修改方法

// === 示例:奇偶排序 ===
const n = getLength();
for (let phase = 0; phase < n; phase++) {
  for (let i = phase % 2; i < n - 1; i += 2) {
    await mark(i, i+1);
    if (await compare(i, i+1)) {
      await swap(i, i+1);
    }
  }
}
算法代码
const n = getLength();
for (let i = 1; i < n; i++) {
  let j = i;
  while (j > 0 && await compare(j - 1, j)) {
    await swap(j - 1, j);
    j--;
  }
}
就绪比较: 0 | 交换: 0