【模版】插入排序

发布时间 2023-12-21 10:55:53作者: 綾川雪絵

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法步骤:

  1. 将第一个数组元素视为有序元素,后面的数组元素视为一段无序序列。
  2. 从第二个元素开始,每个元素一直和前面的元素比较,如果待插元素比正在比较的元素小,那么把有序区正在比较的元素往后放,继续和前面比较,直到遇到不大于自己的元素或者代插元素成为第一个元素为止。
  3. 代插元素插入。
  4. 不断重复,直到所有元素都变得有序。

 

代码实现:

void insertionSort (int arr[],int len) {
    for (int i=1;i<len;i++) {
        int now = a[i],j;  //记录一下待插牌,因为一会还要放回去
        for (int j=i-1,j>=0;j--) {
            if (a[j] > now)
                a[j+1]=a[j];
            else break;
        }
        a[j+1] = now;
    }
}

 

图解:

算法复杂度:

最差时间复杂度和最优时间复杂度均为O(n2