直接插入排序
概念描述
直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增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; } }