二分查找,在有序数组中查找指定数的位置,递归查找。
时间复杂度: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)
}
}
快速排序,以中间数为基准,比中间数小的放在左边数组,大于中间数的放在右边数组,循环
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))
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。