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

冒泡排序 


        function bubbleSort(arr){
            var leng=arr.length;
            for (var i=0;i<leng-1;i++){
                for(var j=0;j<leng-1-i;j++){
                    if(arr[j]>arr[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;i<leng-1;i++){
                for(var j=i+1;j<leng;j++){
                    if(arr[i]>arr[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<leng;i++){
                for(var j=i-1;j>=0;j--){
                    if(arr[j+1]<arr[j]){
                        var temp=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                    } else {
                        break;
                    }
                }
            }
            return arr;
        }
        var arr=[1,3,5,3,6,7,2,3];
        console.log(insertionSort(arr));

快速排序


          function quickSort(arr){
            if(arr.length<=1){
                return arr;
            }    
            var left= [];
            var right= [];
            var mid=arr[0];
            for(var i=0;i<arr.length;i++){
                if(arr[i]<mid){
                    left.push(arr[i])
                } else {
                    right.push(arr[i])
                }
            }
            return quickSort(left).concat(mid,quickSort(right))
           
        }
        var arr=[1,3,5,3,6,7,2,3];
        console.log(quickSort(arr));

归并排序

             function merge(left,right) { 
                var res = [];
                while(left.length>0 && right.length>0) {
                    if (left[0] < right[0]) {
                        res.push(left.shift());
                    } else {
                        res.push(right.shift())
                    }
                }
                return res.concat(left,right);
             }
             function mergeSort(arr) {
                var leng = arr.length;
                if (leng === 1) {
                    return arr;
                }
                var index = Math.floor(leng/2);
                var  left = arr.slice(0,index); 
                var  right = arr.slice(index);  
                return merge(mergeSort(left) , mergeSort(right));  
              
             }
             var arr=[1,5,4,6,7,2,9,12,10];
             console.log(mergeSort(arr));

 

发布了27 篇原创文章 · 获赞 0 · 访问量 1757
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览