曾经去面试,面试官让我写一道排序算法,结果当场没写完全,在这里补充下
-
在这里用的方法是冒泡
-
执行效率使用console.time(key)和console.timeEnd(key)去打印
const arr = [9, 8, 4, 2, 5, 7, 10];
const sort = (arr, desc) => {
const _arr = []
for (let temp of arr) {
if (_arr.length === 0) {
_arr.push(temp)
} else {
if (temp <= _arr[0]) {
_arr.unshift(temp)
} else if (temp >= _arr[_arr.length - 1]) {
_arr.push(temp)
} else {
for (let j in _arr) {
if (temp > _arr[j] && temp < _arr[Number(j) + 1]) {
_arr.splice(Number(j) + 1, 0, temp)
break
}
}
}
}
}
return desc ? _arr.reverse() : _arr
}
console.time('sort')
console.log(sort(JSON.parse(JSON.stringify(arr))))
console.timeEnd('sort')
console.time('sortDesc')
console.log(sort(JSON.parse(JSON.stringify(arr)), true))
console.timeEnd('sortDesc')