插入排序(JAVA)

79 阅读1分钟
  • 原理
    • 插入排序将数组分成两个部分
    • 一部分为已排序数组,另一部分为未排序数组
    • 在每次循环中将未排序数组中的元素插入到已排序的数组中
    • 直到数组有序结束循环
  • 流程
    • 红色表示已排序数组
    • 蓝色表示待插入元素
    • 绿色表示当前与待插入元素进行比较的元素 插入排序.png
  • 代码 insertSort.png
  • 优化方式
    • 待插入元素在于有序数组部分进行比较时,遇到比自己小的元素就表示找到了待插入的位置,不需要再进行比较
    • 插入时可以直接移动元素,不需要进行交换(交换相当于移动了三次元素)
  • 与选择排序对比
    • 两者的时间复杂度都为O(n2)
    • 在大多数情况下,插入排序都略优于选择排序
    • 插入排序属于稳定排序算法,选择排序属于不稳定排序算法