十大经典排序算法之冒泡排序--JavaScript 实现

十大经典排序算法之冒泡排序

冒泡排序应该算是排序算法中最简单排序算法之一。

算法分析: 所谓冒泡,形象上来说就像是水里的气泡一样,越接近水面,气泡越大。那对于我们的数据来说,首先我们对集合进行遍历,然后对比相邻的两个元素,如果第一个元素比第二个元素大,则进行交换。这样一轮比较完毕,在集合最末尾的元素一定是最大的。依次类推,再来对除了最末尾的元素之外的元素进行比较,第二轮过后,倒数第二个元素就是第二大的元素,一直重复以上的过程直到全部排序完毕。

JavaScript 实现

输入 arr 为 [12, 32, 1, 4, 5]

// 遍历一次
function bubbleSort(arr = []) {
    for (let i = 0, len = arr.length; i < len - 1; i++) {
        if (arr[i] > arr[i + 1]) {
            [arr[i], arr[i + 1]] = [arr[i + 1], arr[i]]
        }
    }
}

第一次遍历之后,我们会得到如下的结果:[12, 1, 4, 5, 32]
所以我们只需要再对剩下的[12, 1, 4, 5]进行相同的比较即可。在外层再嵌套一层循环来实现。

function bubbleSort(arr = []) {
    for (let j = 0, len = arr.length; j < len; j++) {
        for (let i = 0; i < len - j - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                [arr[i], arr[i + 1]] = [arr[i + 1], arr[i]]
            }
        }
    }
}

以上的排序方法只处理了数组内容是数值的情况。如果数组里的元素是其他类型的数据,则需要在对元素进行两两比较处进行处理。

你可能感兴趣的:(javascript,排序学习)