冒泡
每一轮比较之后 当前数组中的最大值放到了最后
规律:一轮轮的比较,每一次都是从第一项开始,拿出当前项A和后一项B进行比较, 如果A>B 让两者交换位置
for (let i = 0; i < array.length-1; i++) {
for (let j = 0; j < array.length-1 - i; j++) {
if(array[j+1] < array[j]){
let temp = array[j+1]
array[j+1] === array[j]
array[j] = temp
}
}
}
插入排序
规律:拿当前元素 与新数组元素进行对比 然后插入
let handle = []
handle.push(array[0])
for (let i = 1; i < array.length; i++) {
let A = array[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)
}
}
}
快速排序
规律:二分法
function sort(arr){
if(arr.length <= 1){
return arr
}
let middleIndex = Math.floor(arr.length / 2),
leftArr = [],
rightArr = [],
middleValue = arr.splice(middleIndex, 1)[0]
for (let i = 0; i < arr.length; i++) {
arr[i] < middleValue ? leftArr.push(arr[i]) : rightArr.push(arr[i])
}
return sort(leftArr).concat(middleValue, sort(rightArr))
}