js沙雕排序之睡眠排序&随机排序

1.睡眠排序,只要睡的时间多少就可以排序出来不要在乎时间多少

var arr=[4,77,741,41,142,52,244];
var sleepSort=function(arr,callback){
    const res=[];
    arr.forEach(item=>{
        setTimeout(()=>{    
            res.push(item) 
            // 如果执行完毕,回调
            if(res.length===arr.length) callback(res);
        },item)
    });
}
sleepSort(arr,res=>{console.log(res)})

 

2.随机排序,看运气

     // 随机排序
    function randomSort(arr) {
        var n = 0,
            ordered = false;

        function shuffle(array) {
            for (var i = 0, length = arr.length; i < length; i++) {
                var j = Math.floor(Math.random() * length);
                [arr[i], arr[j]] = [arr[j], arr[i]];
                n++;
            }
        }

        function isOrdered(array) {
            for (var i = 1, length = arr.length; i < length; i++) {
                if (arr[i] < arr[i - 1]) {
                    return false;
                }
            }
            return true;
        }
        // 关键代码  嘿嘿
        while (ordered == false) {
            v = shuffle(arr);
            ordered = isOrdered(arr);
        }
        console.log('额。。。计算了' + n + '次')
        return arr;
    }

    randomSort([3, 5, 8, 2, 55, 68, 125, 5536 ]) 

 

随机排序四种方法

方法一:sort

方法二:递归

方法三:迭代

方法四:洗牌算法

posted @ 2022-04-15 16:57  有只橘猫  阅读(136)  评论(1编辑  收藏  举报