排序算法简记

冒泡排序

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

直接插入排序

function insertSort(arr) {
    for(let i = 1; i < arr.length; i++) {
        for(let j = i ; j > -1; j--) {
            if(arr[j] < arr[j-1]) {
                let temp = arr[j-1];
                arr[j-1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

折半插入排序

快速排序

function quickSort(arr) {
    if(arr.length < 2) {
        return arr;
    }
    else {
        let leftIndex = 0;
        let rightIndex = arr.length - 1;
        let index = {
            value: arr[0],
            pos: 0
        };
        while(leftIndex < rightIndex) {
            if(arr[leftIndex] > arr[rightIndex]) {
                let temp = arr[leftIndex];
                arr[leftIndex] = arr[rightIndex];
                arr[rightIndex] = temp;

                if(arr[leftIndex] === index.value) {
                    rightIndex--;
                    index.pos = leftIndex;
                } else {
                    leftIndex++;
                    index.pos = rightIndex;
                }
            } else {
                if(arr[leftIndex] === index.value) {
                    rightIndex--;
                } else {
                    leftIndex++;
                }
            }
        }
        // console.log('dddd', arr ,' ',arr.slice(0, index.pos),' ',index.value,' ',arr.slice(index.pos + 1, arr.length))
        return quickSort(arr.slice(0, index.pos)).concat(index.value).concat(quickSort(arr.slice(index.pos + 1, arr.length)));
    }
}

简单选择排序

希尔排序

锦标赛排序

堆排序

https://segmentfault.com/a/1190000015487916?utm_source=tag-newest

归并排序

性能比较

原文地址:https://www.cnblogs.com/fogmisty/p/11881077.html