1.插入排序是什么?
插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。
2.描述
插入排序算法的原理如下:
-
从第一个元素开始,该元素可以认为已经被排序;
-
取出下一个元素A,在已经排序的元素序列S中从后向前扫描;
-
若元素S[i]大于新元素,将S[i]向后移动一位;
-
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
-
插入新元素;
-
重复 步骤2~5。
3.示例
// 插入排序
template <typename T>
inline void insertionSort(T arrs[], int length) {
T value;
int mIndex = 0;
for (int i = 1; i < length; i++) // 第2项开始
{
value = arrs[i];
for (mIndex = i - 1; mIndex >= 0 && arrs[mIndex] > value; mIndex--) {
// 从前一项开始向前查找较大数,将较大数后移一位
arrs[mIndex + 1] = arrs[mIndex];
}
arrs[mIndex + 1] = value; //将当前项放入空项中
}
}