1. /**
  2. * 直接插入排序
  3. * @param arr
  4. */
  5. directInsetSort(arr: number[]) {
  6. for (let i = 1; i < arr.length; i++) {
  7. let temp = arr[i]
  8. let j = 0
  9. for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
  10. arr[j + 1] = arr[j]
  11. }
  12. arr[j + 1] = temp
  13. }
  14. return arr
  15. }
  16. swap(arr: number[], i: number, j: number) {
  17. let temp = arr[i]
  18. arr[i] = arr[j]
  19. arr[j] = temp
  20. }

思路:

image.png
代码很短,但逻辑不太简单, 在用后边数组元素与前面数组进行比较的时候, 如果不是相应位置,那就把前面数组当前元素向后移动一个(也就是把当前值赋值给后面的元素)。
另外这个题的排序部分还可以使用二分查找,这里不赘述了,二分查找专题再来搞。