js实现排序算法

  • 冒泡排序
  • 插入排序
  • 选择排序
  • 快速排序

冒泡排序

原理:从第一个元素开始,把当前元素和下一个索引元素进行比较。如果当前元素大,那么就交换位置,重复操作直到比较到最后一个元素

//冒泡排序
function bubbleSort(arr){
    if(Array.isArray(arr)){
        for(var i = arr.length-1;i>0;i--){
            for(var j = 0;jarr[j+1]){
                    [arr[j],arr[j+1]] = [arr[j+1],arr[j]];
                }
            }
        }
        return arr
    }
}
插入排序

原理:第一个元素默认是已排序元素,取出下一个元素和当前元素比较,如果当前元素大就交换位置。那么此时第一个元素就是当前的最小数,所以下次取出操作从第三个元素开始,向前对比,重复之前的操作

//插入排序
function insertSort(arr){
    if(Array.isArray(arr)){
        for(var i = 1;i=0 && arr[preindex]>current){
                arr[preindex+1] = arr[preindex]
                preindex--;
            }
            arr[preindex+1] = current;
        }
        return arr;
    }
}
选择排序

原理:遍历数组,设置最小值的索引为 0,如果取出的值比当前最小值小,就替换最小值索引,遍历完成后,将第一个元素和最小值索引上的值交换。如上操作后,第一个元素就是数组中的最小值,下次遍历就可以从索引 1 开始重复上述操作

//选择排序
function selectSort(arr){
    if(Array.isArray(arr)){
        for(var i=0;i
快速排序

原理:在数据集之中,找一个基准点,建立两个数组,分别存储左边和右边的数组,利用递归进行下次比较

//快速排序
function quickSort(arr){
    if(!Array.isArray(arr)) return;
    if(arr.length <= 1) return arr;
    var left = [];
    var right = [];
    var num = Math.floor(arr.length/2);
    var numValue = arr.splice(num,1)[0];
    for(var i=0;i numValue){
            right.push(arr[i]);
        }else{
            left.push(arr[i]);
        }
    }
    return [...quickSort(left),numValue,...quickSort(right)]
}

你可能感兴趣的:(js实现排序算法)