const isSortable = v => {
if (!Array.isArray(v) || v.length < 2) {
throw 'Not an array or length less than 1'
}
}
const bubleSort = arr => {
isSortable(arr)
const { length } = arr
for (let i = 0; i < length; i++) {
for (let j = 0; j < length - i - 1; j++) {
arr[j] > arr[j + 1] && (arr.splice(j, 1, ...arr.splice(j + 1, 1, arr[j])))
}
}
}
const selectionSort = arr => {
isSortable(arr)
const { length } = arr
for (let i = 0; i < length; i++) {
let cur = i
for (let j = i + 1; j < length; j++) {
arr[cur] > arr[j] && (cur = j)
}
arr[i] > arr[cur] && arr.splice(i, 1, ...arr.splice(cur, 1, arr[i]))
}
}
const insertionSort = arr => {
isSortable(arr)
for (let i = 1; i < arr.length; i++) {
if (arr[i] < arr[i - 1]) {
let cur = i
let temp = arr[cur]
while (cur > 0 && temp < arr[cur - 1]) {
arr[cur] = arr[cur - 1]
cur--
}
arr[cur] = temp
}
}
}
const quickSort = arr => {
if (arr.length <= 1) {
return arr
}
const left = []
const right = []
const base = arr.splice(Math.floor(arr.length / 2), 1)[0]
for (let i = 0; i < arr.length; i++) {
arr[i] < base ? left.push(arr[i]) : right.push(arr[i])
}
return quickSort(left).concat(base, quickSort(right))
}
const testSort = (arr, fn) => {
console.log(arr);
fn(arr)
console.log(arr)
}
const testQuickSort = (arr) => console.log(quickSort(arr))
const getMockArr = (length = 6) => Array.from({ length }).map(v => Math.floor(Math.random() * 100))
testSort(getMockArr(6), bubleSort)
testSort(getMockArr(6), selectionSort)
testSort(getMockArr(6), insertionSort)
testQuickSort(getMockArr(6))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端