冒泡排序
var arr = [1,5,8,7,96,452,11,23];
//冒泡排序
function bubbleSort(arr){
let len = arr.length-1;
for(var i = 0;i< len;i++){
for(var j = 0;j<len-i;j++){
if(arr[j]>arr[j+1]){
[arr[j+1],arr[j]] = [arr[j],arr[j+1]];
}
}
}
console.log(arr);
}
bubbleSort(arr);
选择排序
var arr = [1,5,8,7,96,452,11,23,-2];
function selectSort(arr){
let len = arr.length;
for(var i = 0;i<len;i++){
for(var j =i+1;j<len;j++){
if(arr[i]>arr[j]){
[arr[i],arr[j]] = [arr[j],arr[i]];
// console.log(arr);
}
}
}
console.log(arr);
}
selectSort(arr);
插入排序
function insertionSort(arr) {
for(var i = 1;i<arr.length;i++){
let index = i;
while(!(index==0)){
if(arr[index]<arr[index-1]){
[arr[index],arr[index-1]] = [arr[index-1],arr[index]];
}
index--;
}
}
return arr;
}
console.log(insertionSort(arr));;
快速排序
function quickSort(arr){
//4.结束递归,当ary中小于等于一项,则不用处理
if(arr.length<=1){
return arr
}
//1.找到数组的中间项,在原有的数组里移除他
let middleValue = arr.splice(Math.floor(arr.length/2),1)[0];
//2.准备左右两个数组,循环剩下数组里的每一项,比当前项小的放到左边数组里,反之放到右边数组里
let arrLeft = [],arrRight = [];
for(let i =0;i<arr.length;i++){
arr[i]<middleValue?arrLeft.push(arr[i]):arrRight.push(arr[i]);
}
//3.递归方式让左右两边的数组持续这样处理,一直到左右都排好为止,最后concat
return quickSort(arrLeft).concat(middleValue,quickSort(arrRight));
}
console.log(quickSort(arr));
**
JS的Array内置的sort
Array.prototype.sort()
arr.sort((a,b)=>{
return a - b;
})
**