快速排序和二分查找
一、二分查找和普通查找的优缺点
普通查找:原理简单,不需要数组有序;当元素个数很大时候,效率较低;
二分查找,需要数组有序排列,但是查找效率高;
二、二分查找实现
//查找指定元素在循序数组中的索引
function binary_search(arr,key){ var low=0, high=arr.length-1; while(low<=high){ //重新计算中间项索引位置 var mid=parseInt((high+low)/2); if(key==arr[mid]){ return mid; }else if(key>arr[mid]){ low=mid+1; }else if(key<arr[mid]){ high=mid-1; }else{ return -1; } } }; var arr=[1,2,3,4,5,6,7,8,9,10,11,12,15,29]; console.log(binary_search(arr,10));//9
三、快速排序
function quickSort(arr){ if(arr.length <= 1){ return arr; } var baseIndex = Math.floor(arr.length/2); var baseVal = arr.splice(baseIndex,1)[0];//基准元素 var left = []; var right = []; for(var i=0,len=arr.length; i<len; i++){ if(arr[i] <baseVal){ left.push(arr[i]); }else{ right.push(arr[i]); } } return quickSort(left).concat([baseVal],quickSort(right)); } var arr2 = [1,35,1,45,2,4,65,3,3,4,5,6,6,6]; console.log(quickSort(arr2));