排序算法---直接插入排序

直接插入排序

概念描述

  直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。

基本原理

  通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

  插入排序在实现上,通常采用in-place(就地)排序,从后向前扫描过程中,需要反复把已排序元素逐步向后。

  类似于拿到一副扑克牌,将乱序的扑克,从左往右依次按大小排列,排列过程中观察纸牌大小就类似元素之间的比较,将纸牌插入到介于大于纸牌和小于纸牌的中间,这一过程就是直接插入

原理图解

 

 

 

代码实现

 

void insert_sort(int arr[], int len){
    // 要排序的趟数
    for(int i = 1; i < len; ++i){
        // 将要排序的元素存储起来
        int tmp = arr[i];
        // tmp与之前排好序的元素直接比较,不满足条件则直接结束循环
        int j = i;
        for(; j > 0 && arr[j - 1] < tmp; --j){
            // 将前面满足条件的元素进行后移
            arr[j] = arr[j - 1];
        }
        // 就地插入,继续循环
        arr[j] = tmp;
    }
}

 

posted @ 2021-02-18 18:44  冲锋的蜗牛  阅读(460)  评论(0编辑  收藏  举报