快速排序:递归调用,每次递归选出一个“中值”,头部和尾部分别跟“中值”比较,找出可交换值后交换位置。每次交换后,数组的逆序减少比其他排序算法要多,所以相对比较快
冒泡排序的原理就是讲两个相邻的元素进行比较,数值大的元素就会往后排就是换到走遍,而我们依次比较并把大数放在后面依次循环,那么最大的元素就会排在最后边,注意:在排完一次之后最后面的数已经是最大的了所以我们并不需再再次比较最后一个元素,也就是比较的次数以此减少。
var arr=[4,2,7,2,5,8,0,4,5,7,3,8,9]
冒泡排序
i 的目的是做多少轮的 比较 j和j+1是前后数据比较
var arr=[4,1,7,2]
i==0
arr[i]=4
j=0 arr[j]=4 arr[j+1]=1 4,1,7,2---->1,4,7,2
j=1 arr[j]=4 1,4,7,2--->1,4,7,2
j=2 arr[j]=7 1,4,7,2--->1,4,2,7
### j=3 arr[j]=7 arr[j+1]不存在 因为j+1超过数组的长度,所以j必须是长度-1
i==1
j==0 arr[j]=1 1,4,2,7--->1,4,2,7
j==1 arr[j]=4 1,4,2,7--->1,2,4,7
###j==2 上面一次循环中放在最后的是最大的,所以不需要循环到2
i==2
j=0 arr[j]=1 1,2,4,7-->1,2,4,7
function sorts(arr){
var len=arr.length-1
for(var i=0i<leni++){
for(var j=0j<len-ij++){
if(arr[j]>arr[j+1]){
// if(arr[j+1]-arr[j]<0)
var temp=arr[j+1]
arr[j+1]=arr[j]
arr[j]=temp
}
}
}
}
sorts(arr)
console.log(arr)