明媚如初

文章 评论 浏览 546

明媚如初 2022-05-04 13:57:00

在9012年的今天,其他都是异端,请使用async/await。

你这人真极端,文革期间应该是抛头颅洒热血的好青年。。。

第 42 题:实现一个 sleep 函数,比如 sleep(1000) 意味着等待 1000 毫秒,可从 Promise、Generator、Async/Await 等角度实现

明媚如初 2022-05-03 12:02:35

快速排序

快速排序是 C.R.A.Hoare 于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。

快速排序的步骤分为三步:

  1. 在数据集之中,选择一个元素作为 基准(pivot)。
  2. 所有小于 基准 的元素,都移到 基准 的左边;所有大于 基准 的元素,都移到 基准 的右边。这个操作称为分区 (partition) 操作,分区操作结束后,基准元素所处的位置就是最终排序后它的位置。
  3. 对 基准 左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。

快速排序时间复杂度是 O(nlgn)。 快速排序是 不稳定 的。

function quickSort(arr) {
  if (!Array.isArray(arr)) {
    throw new Error('arg should be array')
  }
  var len = arr.length
  if (len <= 1) return arr
  var pivot = arr[0]
  var left = []
  var right = []
  for (var i = 1; i < len; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i])
    } else {
      right.push(arr[i])
    }
  }
  return quickSort(left).concat(pivot).concat(quickSort(right))
}

JavaScript 与简单算法

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文