javascript 算法

作者: helloyoucan | 来源:发表于2018-05-30 15:31 被阅读0次

    快速排序

    var arr = new Array()
    for(var i = 0;i<20;i++){
        arr.push(Math.floor(Math.random()*100))
    }
    console.log(quickSort(arr))
    function quickSort(arr){
        if(arr.length<=1){return arr}
        var min = arr[0]//以第一个为基准
        arr.shift()//删除第一个
        var left = [],right = []
        for(var i = 0;i<arr.length;i++){
            if(arr[i]<=min){
                left.push(arr[i])
            }else{
                right.push(arr[i])
            }
        }
        return [].concat(arguments.callee(left),[min],arguments.callee(right))
    }
    

    冒泡排序

    var arr = new Array()
    for(var i = 0;i<20;i++){
        arr.push(Math.floor(Math.random()*100))
    }
    sort(arr)
    console.log(arr)
    function sort(arr){
        for(var i = 0;i<arr.length;i++){
            for(var j = i+1;j<arr.length;j++){
                if(arr[i]>=arr[j]){
                    var temp = arr[i]
                    arr[i] = arr[j]
                    arr[j]=temp
                }
            }
    
        }
    
    }
    

    二分查找

    var arr = new Array()
    for(var i = 0;i<20;i++){
        arr.push(Math.floor(Math.random()*100))
    }
    sort(arr)//先排序
    console.log(arr)
    console.log(search(arr,56))
    function search(arr,num){
        var min = 0,max=arr.length
         while(min<=max){
                var mid = Math.floor((max+min)/2); //中间值
                if(arr[mid]<num){
                    min = mid+1;
                }else if(arr[mid]>num){
                    max = mid-1;
                }else{
                    return mid; 
                }
            }
            return -1;   //没找到返回-1
    }
    

    相关文章

      网友评论

        本文标题:javascript 算法

        本文链接:https://www.haomeiwen.com/subject/xaztsftx.html