冒泡排序
var arr=[9,3,-1,10]
//冒泡排序法
//第一趟排序,将最大的数排在最后
var temp=0;
for(var j=0;j<arr.length-1;j++){
for(var i=0;i<arr.length-1-j;i++){
if(arr[i]>arr[i+1]){
temp=arr[i]
arr[i]=arr[i+1]
arr[i+1]=temp
}
}
}
console.log(arr)
选择排序
var arr=[101,34,119,1]
//第一轮排序 1 34 119 101
//第二轮排序 1 34 119 101
//第三轮排序 1 34 101 119
function selectSort(){
for(var j=0;j<arr.length-1;j++){
var minIndex=j
var min=arr[j]
for(var i=j+1;i<arr.length;i++){
if(min>arr[i]){ //若变成从大到小排序,则用<
min=arr[i]
minIndex=i
}
}
arr[minIndex]=arr[j]
arr[j]=min
}
}
selectSort()
插入排序
//插入排序
var arr=[101,34,-1,119,90,0]
for(var i=1;i<arr.length;i++){
var insertVal=arr[i]
var insertIndex=i-1
while(insertIndex>=0&&insertVal<arr[insertIndex]){
arr[insertIndex+1]=arr[insertIndex]
insertIndex--
}
arr[insertIndex+1]=insertVal
}
console.log(arr)
二分查找
//有序列表
var arr=[1,5,6,8,9,10,12,14]
function search(arr,left,right,findVal){
var mid=Math.ceil((left+right)/2)
var midVal=arr[mid]
//递归调用
if(findVal>midVal){
//向右递归
return search(arr,mid+1,right,findVal)
}else if(findVal<midVal){
//向左递归
return search(arr,left,mid-1,findVal)
}else{
return mid
}
}
console.log(search(arr,0,arr.length-1,12))