1.冒泡排序思想:数组当前项和后一项比较,前比后大则交换位置,最大的数放后面。
以下代码实现:
function bubbleSort(arr){
let temp = null;
var len = arr.length;
for(let i=0; i<len-1; i++){
for(let j=0; j<len-1-i; j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
var newArr = bubbleSort([5,6,4,9,1,3,4,10,44,33,66]);
console.log(newArr);
控制台输出:
2.插入排序:抽扑克牌,和手里的扑克牌依次比较
function insertSort(arr){
let handle = [];
handle.push(arr[0]);
let len = arr.length;
for(let i=1; i<len; i++){
let A = arr[i];
for(let j=handle.length-1; j>=0; j--){
let B = handle[j];
if(A>B){
handle.splice(j+1,0,A);
break;
}
if(j===0){
handle.unshift(A)
}
}
}
return handle;
}
var newArr = insertSort([5,6,4,9,1,3,4,10,33,55,66]);
console.log(newArr);
控制台输出:
3.快速排序:找到中间项,把它从原来数组中移除
function quickSort(arr){
if(arr.length<=1){
return arr;
}
let middleIndex = Math.floor(arr.length/2);
let middleValue = arr.splice(middleIndex,1)[0];
let arrLeft = [];
let arrRight = [];
for(let i =0; i<arr.length; i++){
let item = arr[i];
item < middleValue ? arrLeft.push(item) : arrRight.push(item);
}
var newArr = quickSort(arrLeft).concat(middleValue, quickSort(arrRight));
return newArr;
}
var newArr = quickSort([5,6,4,9,1,3,4,10,55,33,66,77]);
console.log(newArr);
控制台打印:
4.选择排序:从头开始,每一项跟后面所有进行比较,前大于后就换位置;
function selectSort(arr){
let len = arr.length;
let temp = null;
for(let i=0; i<len-1; i++){
var min = i;
for(var j =min+1; j<len; j++){
if(arr[min]>arr[j]){
min = j;
}
}
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp
}
return arr
}
var newArr = selectSort([5,6,4,9,1,3,4,10,55,33,66,77]);
console.log(newArr);
控制台打印: