/**
* 直接插入排序
* @param arr
*/
directInsetSort(arr: number[]) {
for (let i = 1; i < arr.length; i++) {
let temp = arr[i]
let j = 0
for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
arr[j + 1] = arr[j]
}
arr[j + 1] = temp
}
return arr
}
swap(arr: number[], i: number, j: number) {
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
思路:
代码很短,但逻辑不太简单, 在用后边数组元素与前面数组进行比较的时候, 如果不是相应位置,那就把前面数组当前元素向后移动一个(也就是把当前值赋值给后面的元素)。
另外这个题的排序部分还可以使用二分查找,这里不赘述了,二分查找专题再来搞。