冒泡排序、选择排序、插入排序、快速排序 、归并排序的JavaScript实现

  1. 冒泡排序
function bubbleSort(array){
    const len = array.length
    // 一共要进行的次数由外层循环决定
    for(let i = 0 ; i array[j+1]){
                [array[j],array[j+1]] = [array[j+1],array[j]]
            }
        }
    }
    console.log(array)
    return array
}
const a = [5,3,4,6,9,7,1]
bubbleSort(a)//[1, 3, 4, 5, 6, 7, 9]
  1. 选择排序
// 从待排序数据中寻找最小值,将其与序列最左边的数字交换
function selectSort(array){
    const len = array.length 
    let minIndex
    for(let i = 0 ; i < len ; i++){
        minIndex = i
        for(let j = i ; j 
  1. 插入排序
// 插入排序就是从右侧未排序区域内取一个数据,
// 然后将它插入到已排序区域内合适的位置
function insertSort(array){
    const len = array.length
    for(let i = 1 ; i0&&array[j-1]>temp){
            array[j] = array[j-1]
            j--
        }
        // 退出while循环时,j刚好位于插入位置
        array[j] = temp
    }
    console.log(array)
    return array
}
const a = [5,3,4,6,9,7,1]
insertSort(a)//[1, 3, 4, 5, 6, 7, 9]
  1. 快速排序
// 快排的观念是分治,选取一个只,将所有小于它的只放在左边,大于他的值放在右边
// 对于左边和右边的子集,同样处理,直到子集只剩下一个元素
function quickSort(array){
    const len = array.length
    if(len<2) return array
    const left = [] ,right = []
    let pivotIndex = len/2|0
    // 避免重复,先将当前值从数组中取出
    let pivot = array.splice(pivotIndex,1)[0]
    for(let val of array){
        if(val < pivot){
            left.push(val)
        }else{
            right.push(val)
        }
    }
    return quickSort(left).concat([pivot],quickSort(right))
}
const a = [5,3,4,6,9,7,1]
console.log(quickSort(a))//[1, 3, 4, 5, 6, 7, 9]
  1. 归并排序
// 分治 (nlogn)
function merge(left,right){
    let arr = []
    while(left.length&&right.length){
        if(left[0]

你可能感兴趣的:(冒泡排序、选择排序、插入排序、快速排序 、归并排序的JavaScript实现)