const insertionSort = arr => { const length = arr.length; let tem = 0; for (let i = 1; i < length; i ++) { tem = arr[i] let j for (j = i -1; j >= 0; j --) { if (tem < arr[j]) { arr[j + 1] = arr[j]; continue } break } arr[j + 1] = temp } return arr }
选择排序(Insertion Sort)
时间复杂度:最好最差都是O(n^2)
是否原地排序:✅
是否稳定排序:❌
思路:将数据分为已排序区间和未排序区间,取未排序区间的元素中最小的元素,把它放在已排序区间的末尾
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/** 选择排序 */
const selectionSort = arr => { let min = 0; for (let i = 0; i < arr.length; i++) { min = i for (j = i + 1; j < arr.length;j ++) { if (arr[min] > arr[j]) { min = j } if (min !== i) { [arr[min], arr[i]] = [arr[i], arr[min]] } } } return arr }