二分查找,在有序数组中查找指定数的位置,递归查找。
时间复杂度:O(logn)
空间复杂度:O(1)

function search(arr, item, start, end) {
    if (start > end) {
        return -1
    }
    var mid = Math.floor((start + end) / 2)
    if (item === arr[mid]) {
        return mid
    }
    else if (item < arr[mid]) {
        return search(arr, item, start, mid - 1)
    }
    else {
        return search(arr, item, mid + 1, end)
    }
}

快速排序,以中间数为基准,比中间数小的放在左边数组,大于中间数的放在右边数组,循环
image.png

function quickSort(arr){
      if (arr.length <= 1) { return arr; }
      var middle=Math.floor(arr.length / 2)
    let temp=arr.splice(middle,1)[0];
    let right=[]
    let left=[]
    for(var i=0;i<arr.length;i++){
        
        if(arr[i]<temp){
            left.push(arr[i])
        }else{
            right.push(arr[i])
        }
    }
    return quickSort(left).concat([temp],quickSort(right))
}

→_→空
4 声望0 粉丝