码迷,mamicode.com
首页 > 编程语言 > 详细

JS中冒泡排序,选择排序,快速排序

时间:2018-08-17 22:19:19      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:函数   length   nbsp   return   func   ret   center   就是   concat   

    var arr = [1,4,2,9,7,6,5,4,7,5];
    // 冒泡排序(通俗的说就是j 和 j+1打,谁赢了谁去后面)
 
    for(var i = 1;i<arr.length;i++){
        for(var j = 0;j<arr.length - i;j++){
            if(arr[j]>arr[j+1]){
                var temp =  arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    console.log(arr);


    // 选择排序(通俗的说就是j 和i打,谁赢了谁去前面)
 
    for(var i = 0;i<arr.length-1;i++){
        for(var j = i+1;j<arr.length;j++){
            if(arr[i]>arr[j]){
                var temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
            }
        }
    }
    console.log(arr);



    //速排序:
        取数组中间下标的值,再将其他值与该值相比,大于加入右数组,小于加入左数组,递归调用
 
    function quick(arr){
        // 递归出口条件
        if(arr.length<=1){return arr;}
        // 获取中间下标
        var centerindex = arr.length%2==0?arr.length/2:(arr.length+1)/2;
        // 获取中间下标对应的值
        var centerElement = arr[centerindex];
        // 创建左右数组
        var left = [];
        var right = [];
        // 循环判断,若元素大于中间下表对应的值则加入左数组,反之加入右数组
        for(var i = 0;i<arr.length;i++){
            if((i!=centerindex)&&(arr[i]>=centerElement)){
                right.push(arr[i]);
            }
            if((i!=centerindex)&&(arr[i]<centerElement)){
                left.push(arr[i]);
            }
        }
        //递归调用该函数
        return quick(left).concat(centerElement).concat(quick(right));
    }
   console.log(quick(arr));

JS中冒泡排序,选择排序,快速排序

标签:函数   length   nbsp   return   func   ret   center   就是   concat   

原文地址:https://www.cnblogs.com/suihang/p/9495302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!