//冒泡排序
function bubbleSort(arr){
for(var i=0;i<arr.length;i++){//外层控制循环圈数
for(var j=0;j<arr.length-1-i;j++){//内层循环控制项数之间的交换
if(arr[j+1]<arr[j]){
var temp;//借用第三个变量,实现数据交换
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
//归并排序
function merge(leftArr,rightArr){
while(leftArr.length&&rightArr.length){
if(leftArr[0]<rightArr[0]){
result.push(leftArr.shift())
}else{
result.push(rightArr.shift())
}
}
return result.concat(leftArr).concat(rightArr)
}
function mergeSort(arr){
if(arr.length===1){
return arr;
}
var middleIndex=Math.floor(arr.length/2)
var left=arr.slice(0,middleIndex);
var right=arr.slice(middleIndex)
return merge(mergeSort(left),mergeSort(right))
}
//快速排序
function quickSort(arr){
var middleIndex=Math.floor(arr.length/2);//获取中间索引
var middle=arr.splice(middleIndex,1);//获取中间数
var left=[];
var right=[];
for(var i=0;i<arr.length;i++){
if(arr[i]<middle){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
return quickSort(left).concat(middle,quickSort(right));
}
//递归查找
function binaraySearch(arr,item,start,end){
var start=start||0
var end=end||arr.length-1
if(start>end){
return '404';
}
var middle=parseInt((start+end)/2)
if(arr[middle]===item){
return middle;
}else if(arr[middle]>item){
end=middle-1;
return binaraySearch(arr,item,start,end)
}else if(arr[middle]<item){
start=middle+1;
return binaraySearch(arr,item,start,end)
}
}
//非递归
function binaraySearch1(arr,item){
var start=0;
var end=arr.length-1;
while(start<=end){
var middle=parseInt((start+end)/2)
if(item===middle){
return middle
}else if(item>arr[middle]){
start=middle+1;
}else if(item<arr[middle]){
end=middle-1;
}else{
return -1;
}
}
}