思想: 利用有序表的插入操作进行排序
有序表的插入: 将一个记录插入到已排好序的有序表中,从而得到一个新的有序表。
直接插入排序算法描述
初始,令第1 个元素作为初始有序表;
依次插入第2 ,3 , …, k 个元素构造新的有序表;直至最后一个元素;
直接插入排序算法主要应用比较和移动两种操作。
void InsertSort(int Array[], int n){
int temp;
int j;
for (int i=1;i<n;i++)
{
temp=Array[i];
j=i-1;
while(j>=0 && temp<Array[j]){
Array[j+1]=Array[j];
j=j-1;
}
Array[j+1]=temp;
}
}
因此,直接插入排序的时间复杂度为O(n2)。
直接插入算法的元素移动是顺序的,该方法是稳定的。