JavaScript排序算法总结:冒泡排序 选择排序 插入排序 快速排序 归并排序

注:交换数组中的两个元素也可以用ES6的解构赋值

 [arr[j],arr[j+1]]=[arr[j+1],arr[j]]

 

冒泡排序 

 // 一轮轮的比较,每一轮都从第一项开始,拿出当前项A与后一项B进行比较,如果A>B,则让两者交换位置
 // 最大轮数 arr.length-1
 // 每一轮的次数 arr.length-1-i
        
       function bubbleSort(arr){
            var leng=arr.length;
            for (var i=0;iarr[j+1]){
                        var temp=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                    }
                }
            }
            return arr;
        }
        var arr=[1,3,5,3,6,7,2,3];
        console.log(bubbleSort(arr));

选择排序

         function selectionSort(arr){
            var leng=arr.length;
            for (var i=0;iarr[j]){
                        var temp=arr[j];
                        arr[j]=arr[i];
                        arr[i]=temp;
                    }
                }
            }
            return arr;
        }
        var arr=[1,3,5,3,6,7,2,3];
        console.log(selectionSort(arr));

插入排序

     // 当前值和之前的每个值进行比较,发现有比当前值小的值就进行交换
     // 从第二项开始抓取
        function insertionSort(arr){
            var leng=arr.length;
            for (var i=1;i=0;j--){
                    if(arr[j+1]

快速排序

    // 选择一个基数,这里取的是数组中的第一个数作为基数,并把它从数组中取出来
    // 准备两个数组容器,遍历数组,逐个与基数比对,较小的放左边容器,较大的放右边容器;
    // 递归处理两个容器的元素,并将处理后的数据与基数按大小合并成一个数组,返回。
         
     function quickSort(arr){
            if(arr.length<=1){
                return arr;
            }    
            var left= [];
            var right= [];
            var base=arr.splice(0,1);
            console.log(arr)
            for(var i=0;i

归并排序

// 一个用来递归 一个用来归并
var sort=function(arr){

    if(arr.length<=1) return arr;
    let mid=parseInt(arr.length/2);
    return merge(sort(arr.slice(0,mid)),sort(arr.slice(mid)));

}
var merge=function(left,right){

    let res=[];
    while(left.length>0 && right.length>0){
        left[0]

 

你可能感兴趣的:(数据结构与算法,JavaScript)