JavaScript 常用的排序算法:冒泡排序与快速排序

冒泡排序

function bubbleSort(array) {
    for (let i = 0; i < array.length; i++)
        for (let j = 0; j < array.length - i - 1; j++)
            if (array[j] > array[j + 1]) {
                [array[j], array[j + 1]] = [array[j + 1], array[j]]; // 交换数据
            }
    return array;
}

  冒泡排序的原理:

  • 在第一轮比较中,找出最大值,放在数列最后。
  • 在第二轮比较中,找出(除去最后一位的)最大值,放在数列最后。
  • 一直比较到最后一个数,即可得到一个从小到大排序的数列。

快速排序

function quickSort(array) {
    if (array.length <= 1) {
        return array;
    } else {
        let left = [], right = [], m = Math.floor(array.length / 2); // 中间值的坐标
        let mid = array.splice(m, 1)[0]; // 中间值
        for (let i = 0; i < array.length; i ++) {
            if (array[i] < mid) {
                left.push(array[i]);
            } else {
                right.push(array[i]);
            }
        }
        return [quickSort(left), mid, quickSort(right)].flat();
    }
}

  快速排序的原理:

  • 快排的本质是递归。
  • 在第一轮比较中,首先取出中间值,然后把中间值与剩下的数字比较,比中间值小的数字放在数组 left 中,反之放在数组 right 中。
  • 再分别递归 leftright

猜你喜欢

转载自www.cnblogs.com/zhaoziwei/p/10601798.html
今日推荐