直接插入排序必须采取顺序存储
时间复杂度为O(n^2)
辅助记录空间temp
直接插入排序是稳定的排序算法
49 | 38 | 65 | 97 | 76 | 13 | 27 | 49 |
38 | 49 | 65 | 97 | 76 | 13 | 27 | 49 |
38 | 49 | 65 | 97 | 76 | 13 | 27 | 49 |
38 | 49 | 65 | 97 | 76 | 13 | 27 | 49 |
38 | 49 | 65 | 76 | 97 | 13 | 27 | 49 |
13 | 38 | 49 | 65 | 76 | 97 | 27 | 49 |
13 | 27 | 38 | 49 | 65 | 76 | 97 | 49 |
13 | 27 | 38 | 49 | 49 | 65 | 76 | 97 |
从上表格可知,每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。
C/C++实现
void insertSort(int *a,int n) {//n为数组大小
int i, j, temp;
for ( i = 1; i < n; ++i)
{
temp = a[i];
for (j= i-1;temp<a[j] &&j>=0; j--)//从后面往前找插入位置
{
a[j + 1] = a[j];
}
if (j!=i-1)
{
a[j + 1] = temp;
}
}
}
这里用一张更直观的图看直接插入排序(来自https://www.cnblogs.com/chengxiao/p/6103002.html)