用js手撕七種排序演算法!!內附執行速度測試函式

2022-09-13 19:06:13 字數 2688 閱讀 2434

sort.js

/**

* @description: 氣泡排序1 最蠢兩兩比較替換

* @param arr

* @return:

*/const bubble1 = (arr) =>

}} return arr

}

/**

* @description: 氣泡排序2 避免公升序比較 利用boolean

* @param arr

* @return:

*/const bubble2 = (arr) =>

}if (change) break

} return arr

}

/**

* @description: 氣泡排序3

* @param arr

* @return:

*/const bubble3 = (arr) =>

}i = lastindex

} return arr

}

/**

* @description: 選擇排序

* @param arr

* @return:

*/const select = (arr) =>

let tmp = arr[minindex]

arr[minindex] = arr[i]

arr[i] = tmp

} return arr

}

const select1 = (arr) => 

// console.log(minindex,maxindex,arr[minindex],arr[maxindex])

for (let j = i + 1; j < arr.length - i - 1; j++)

// console.log(minindex,maxindex,arr[minindex],arr[maxindex],i,arr.length-1-i)

let tmp = arr[minindex]

arr[minindex] = arr[i]

arr[i] = tmp

// if(i ===maxindex )

tmp = arr[maxindex]

arr[maxindex] = arr[arr.length - 1 - i]

arr[arr.length - 1 - i] = tmp

} return arr

}

/**

* @description: 堆排序

* @param arr

* @return:

*/const heap = (arr) =>

while (len > 1)

function shiftdown(index)

arr[index] = nowval

}}

/**

* @description: 插入排序

* @param arr

* @return:

*/const insert = (arr) =>

arr[moveindex] = move

} return arr

function insertindex(index) else

}return left

}}

/**

* @description: 快速排序

* @param arr

* @return:

*/const fast = (arr) =>

function getindex(begin,end)else}}

arr[begin] = tmp

return begin

}}

/**

* @description: 歸併排序

* @param arr

* @return:

*/const merge = (arr) =>

sortarr(0, arr.length)

return arr

function mergearr(begin, mid, end)

return arr

//常規 二分步長 最差n**2

function getsteparr()

} //最優步長序列 最差n**(4/3)

function getnetsteparr()else

if(step>=len) break

myarr.unshift(step)

k++}

return myarr

} function sort(step){

for(let col = 0;colcol && arr[cur]common.js

main.js

require後呼叫即可!

隨時要手撕的七種排序演算法

隨時要手撕的七種排序演算法 1.快排 def qsort arr def sort arr,start,end if start end return i,j start,end key arr start while i j 從右邊找起 while i j and arr j key j 1 ar...

七種排序演算法

排序方法 平均情況 最好情況 最壞情況 輔助空間 穩定性插入排序 o n 2 o n o n 2 o 1 穩定希爾排序 o n log n o n 2 o n 1.3 o n 2 o 1 不穩定選擇排序 o n 2 o n 2 o n 2 o 1 不穩定氣泡排序 o n 2 o n o n 2 o ...

演算法基礎篇 七種內排序演算法C 實現

七種內排序演算法,目前只寫了 原理解析待補充 1.交換類排序 冒泡 快排 2.選擇類排序 選擇 堆排序 3.插入類排序 直接插入 希爾 4.歸併排序 測試用例 51 2 4 3 3 10100 293 123 212 293 434 5 12 439 3 todo 原理 複雜度解析與穩定性解析。in...