1//数组本身sort排序
var arr=[1,2,14,65,3,97,24]
//必须设置一个排序函数 a-b升序 b-a降序
arr.sort(function(a,b){
return a-b
})
console.log(arr);//[1, 2, 3, 14, 24, 65, 97]
//冒泡
//相邻两个比较,小的去前面,再开始第二轮比较
function fn (arr){
for(var i =0;i<arr.length;i++){
for(var j=0;j<arr.length-i;j++){
///相邻两个比较,小的去前面
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1]
arr[j+1]=temp
}
}
}
return arr;
}
console.log(fn(arr));
//========选择排序=============
//外层循环遍历每一项,第一次用第一个数跟后面所有的比较,小的去第一个;
//第二次用第二个跟后面所有比较,小的去第二个
function xuanze (arr){
for(var i =0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
return arr;
}
console.log(xuanze(arr));
快排
function quickSort(arr){
//如果数组<=1,则直接返回
if(arr.length <= 1) return arr
var zhongIndex = Math.floor(arr.length / 2)
//取出中间下标对的值,原值删除
var zhong = arr.splice(zhongIndex, 1)[0]
//定义左右数组
var left = [], right = []
//比基准小的放在left,比基准大的放在right
for(var i = 0; i < arr.length; i++){
if(arr[i] <= zhong){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
//最后将数组连接 ,左右数组递归调用
return quickSort(left).concat([zhong],quickSort(right))
}
console.log(quickSort(arr));