明媚如初 2022-05-03 12:02:35
快速排序
快速排序是 C.R.A.Hoare 于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。
快速排序的步骤分为三步:
- 在数据集之中,选择一个元素作为 基准(pivot)。
- 所有小于 基准 的元素,都移到 基准 的左边;所有大于 基准 的元素,都移到 基准 的右边。这个操作称为分区 (partition) 操作,分区操作结束后,基准元素所处的位置就是最终排序后它的位置。
- 对 基准 左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
快速排序时间复杂度是 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)) }
- 共 1 页
- 1
你这人真极端,文革期间应该是抛头颅洒热血的好青年。。。
第 42 题:实现一个 sleep 函数,比如 sleep(1000) 意味着等待 1000 毫秒,可从 Promise、Generator、Async/Await 等角度实现