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