1、冒泡排序
遍历元素,跟其下一个元素对比
把最大的逐个往后排列
let arr = [5, 3, 6, 9, 2, 1, 8]
for(let i = 0; i < arr.length-1; i++){
for(let j = 0; j < arr.length-1; j++){
if(arr[j] > arr[j+1]){
var current = arr[j]
arr[j] = arr[j+1]
arr[j+1] = current
}
}
}
2、选择排序
把当前元素分别跟后面所有的元素对比
把最小的逐个往前排列
let arr = [5, 3, 6, 9, 2, 1, 8]
for(let i = 0; i < arr.length; i++){
for(let j = i+1; j < arr.length; j++){
if(arr[i] > arr[j]){
var current = arr[i]
arr[i] = arr[j]
arr[j] = current
}
}
}
3、快速排序
let arr = [5, 3, 6, 9, 2, 1, 8]
function fastSort(arr) {
// 退出递归并
if(arr.length <= 1) return arr
// 找中间元素位置
let index = parseInt(arr.length / 2)
// 拿出中间的元素,所有元素跟这个元素比较
let brr = arr.splice(index, 1)
// 小于的放一个数组
let crr = []
// 大于或者等于的放一个数组
let drr = []
for(let i = 0; i < arr.length; i++){
if(arr[i] < brr[0]){
crr.push(arr[i])
}else{
drr.push(arr[i])
}
}
// 递归 合并排序好的数组
return fastSort(crr).concat(brr, fastSort(drr))
}
fastSort(arr)
4、sort()排序
let arr = [5, 3, 6, 9, 2, 1, 8]
arr.sort((a, b) => a - b)