Javascript实现简单的冒泡排序、插入排序

数组值交换方法

将数组arr[i]、arr[j] 进行值交换javascript

function exchange (arr, i, j) { // 数组值交换
    [arr[i], arr[j]] = [arr[j], arr[i]] // es6结构赋值语法
}
复制代码

冒泡排序

动图理解

代码实现

function bubbleSort (arr) {
    let list = [...arr]
    let len = list.length
    for (i=0; i<len - 1; i++) {
        for (j=0; j<len - 1 - i; j++) { // 第一轮比较已将最大值放到了数组最后一位,因此每次循环都须要减去i
            if (list[j] > list[j+1]) { // 前一位大于后一位交换位置
                exchange(list, j, j+1)
            }
        }
    }
    return list
}
复制代码

冒泡排序,顾名思义,排序过程就像水下的气泡冒出过程同样,气泡上浮过程当中慢慢地变大;经过比较相邻两个数,若是左边大于右边,则相互调换位置,交换完后往前进一步,继续比较;将较大的数往右边放html

插入排序

动图理解

代码实现

function insertionSort (arr) {
    let list = [...arr]
    let len = list.length
    for (i=1; i<len; i++) { // 取数组第二位进行插入比较
        for (j=i; j>0; j--) { // 从数组第二位开始,逐一跟前一位比较
            if (list[j] < list[j-1]) { // 当前一位大于后一位,将调换位置,继续往前比较
                exchange(list, j, j-1)
            } else { // 当前一位小于后一位就中止本次的比较,进行下一位数的插入比较
                break
            }
        }
    }
    return list
}
复制代码

插入排序,过程就很像玩扑克牌的摆牌动做,抽出一张牌(算法是抽出第二张开始比较),往左依次比较,若是比目标小的就插入其左边,直至排序完毕java

结果测试

let arr = [2, 4, 6, 1, 9, 10, 20, 7, 9, 8]

console.log('要排序的数组:' + arr) // 要排序的数组:2,4,6,1,9,10,20,7,9,8

console.log('冒泡排序结果:' + bubbleSort(arr)) // 冒泡排序结果:1,2,4,6,7,8,9,9,10,20

console.log('插入排序结果:' + insertionSort(arr)) // 插入排序结果:1,2,4,6,7,8,9,9,10,20

复制代码

参考

冒泡排序参考:https://www.runoob.com/w3cnote/bubble-sort.htmles6

插入排序参考:https://www.runoob.com/w3cnote/insertion-sort.html算法

相关文章
相关标签/搜索