冒泡排序和快速排序

26 阅读1分钟

冒泡排序

循环比较数组中的两个数,如果前者大于后者,那么就把两个数的位置交换,经过n-1轮,就可以完成数组的排序

// 冒泡排序
const arr = [1, 213, 1241, 12, 2315, 2, 123]
function sort(arr) {
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr.length - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                let temp = arr[j]
                arr[j] = arr[j + 1]
                arr[j + 1] = temp
            }
        }
    }
    return arr
}
console.log(sort(arr))

快速排序

首先定义一个quickSort函数,传入一个数组,先判断数组长度,小于等于1则直接返回,将数组中间的元素定为基准值,再定义两个空数组,一个是用来存放小于基准值的元素,一个用来存放大于基准值的元素,当右指针大于左指针时,循环数组,判断当前元素与基准值的大小,判断后,存放到对应的数组中,然后将左右两个数组拼接起来并递归调用quickSort方法

// 快速排序
 const arr = [1, 213, 1241, 12, 2315, 2, 123]
    var quickSort = function (arr) {
        if (arr.length <= 1) {
            return arr
        }
        var pivotIndex = Math.floor(arr.length / 2)
        var pivot = arr.splice(pivotIndex, 1)[0]
        var left = []
        var right = []

        for (let i = 0; i < arr.length; i++) {
            if (arr[i] < pivot) {
                left.push(arr[i])
            } else {
                right.push(arr[i])
            }
        }
        return quickSort(left).concat([pivot], quickSort(right))
    }
    console.log(quickSort(arr))