冒泡排序
function bubbleSort(arr) {
var len = arr.length
for (var i = 0; i < len - 1; i++) {
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j + 1]
arr[j + 1] = arr[j]
arr[j] = temp
}
}
}
return arr
}
var data = bubbleSort([8, 5, 6, 4, 9, 7, 1, 10])
console.log(data) //[1,4,5,6,7,8,9,10]
快速排序
function quick(ary) {
// 结束递归
if (ary.length <= 1) {
return ary
}
let middleIndex = Math.floor(ary.length / 2)
let middleValue = ary.splice(middleIndex, 1)[0]
let aryLeft = [],
aryRight = []
for (let i = 0; i < ary.length; i++) {
let item = ary[i]
item < middleValue ? aryLeft.push(item) : aryRight.push(item)
}
return quick(aryLeft).concat(middleValue, quick(aryRight))
}
let ary = [12, 8, 15, 16, 1, 24]
ary = quick(ary)
console.log(ary) // [1, 8, 12, 15, 16, 24]
插入排序
function insert(ary) {
// 定义新数组
let handle = []
handle.push(ary[0])
for (let i = 1; i < ary.length; i++) {
// 获取每个元素
let A = ary[i]
// 与新数组依次比较
for (let j = handle.length - 1; j >= 0; j--) {
// 每次要比较的元素
let B = handle[j]
// 如果A比B大,就把A放到B的后面
if (A > B) {
handle.splice(j + 1, 0, A)
break
}
// 已经比到第一项,就把元素放到最前面
if (j === 0) {
handle.unshift(A)
}
}
}
return handle
}
let ary = insert([12, 8, 24, 16, 1])
console.log(ary) //[1, 8, 12, 16, 24]