冒泡排序、插入排序、快速排序JS代码

复制代码
let a = [5, 4, 3, 16, 2, 6, 8, 9, 1];

// 冒泡排序:从第一个开始遍历,和后面的数字进行比较,大的数放到后面。
const bubbleSort = arr => {
  let len = arr.length;
  for (let i = 0; i < len; i++) {
    for (let j = i + 1; j < len; j++) {
      if (arr[i] > arr[j]) {
        [arr[i], arr[j]] = [arr[j], arr[i]];
      }
    }
  }
  return arr;
};

// 插入排序:将当前遍历到的数据和前面的数据进行对比,并插入到对应的位置。注意一直都能保持前面的数据都是有序的
const insertSort = arr => {
  let len = arr.length;
  for (let i = 1; i < len; i++) {
    let j = i;
    let temp = arr[i]; // 临时存放需要比较的值
    while (j > 0) {
      if (arr[j - 1] > temp) {
        // 值大于需要比较的值,则把该值往后挪一位,给temp腾位置
        arr[j] = arr[j - 1];
      } else {
        break;
      }
      j--;
    }
    arr[j] = temp;
  }
  return arr;
};
// 快速排序思路:使用递归思路
// 小的放左边 +  中间值(选择的第一个元素) + 大的放右边 --- 一直递推,直到结束
const quickSort = arr => {
  const rec = trr => {
    if (trr.length < 2) {
      return trr;
    }
    let mid = trr[0];
    let leftArr = [];
    let rightArr = [];
    for (let i = 1; i < trr.length; i++) {
      // 下表从从第一个开始
      if (trr[i] < mid) {
        // 小的放左边
        leftArr.push(trr[i]);
      } else {
        rightArr.push(trr[i]);
      }
    }
    return [...rec(leftArr), mid, ...rec(rightArr)];
  };
  return rec(arr);
};
复制代码

 

posted @   寅信  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示