算法(二分查找,快速排序)

老夫又回來更了,此次就寫全世界都會而我不會的算法吧算法

 

首先是快速排序了。快速排序分爲三步數組

一、找基準,spa

二、排序,小三在左邊房子(數組),大老婆在右邊房子(數組)code

三、大老婆小老婆出來談談,合併一下,都是一家人。blog

好了,知道這幾步了那麼開始寫吧。排序

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

 

  接下來就是二分查找,有一種遊戲是0~100猜一個數字,好比猜65,你猜40而後得到提示是偏大仍是偏小,最後往答案的正確方向走。遊戲

那麼二分查找其實跟這樣的是相似的,那麼一塊兒來開心的寫代碼吧io

function twoPointLookup(arr,low,high,key){
  if(low > high){
    return -1
  }
  var num = parseInt((low + high) / 2);
  if(key == arr[num]){
    return num 
  }else if(arr[num] > key){
    high = num - 1;
    return  twoPointLookup(arr,low,high,key)
   } else if (arr[num] < key){
    low = num + 1
    return  twoPointLookup(arr,low,high,key)
  }
}
相關文章
相關標籤/搜索