老夫又回來更了,此次就寫全世界都會而我不會的算法吧算法
首先是快速排序了。快速排序分爲三步數組
一、找基準,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) } }