原理
直接插入排序法的原理是:每次将一个值按照排序规则插入已经排好的序列中,直到所有值都插入。
默认一个值为一个有序序列。
实现
void insertionSort(int a[],int n)
{
int i,j,tmp;
for(i=1;i<n;i++)
{
for(j=i;j>0;j--)
{
if(a[j]<a[j-1])
{
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}
}
}
}
说明
i为当前待排序的值,i前的序列为排序好的序列
j层循环从当前位置开始向前依次比较相邻的两个值,不同则交换,一层循环后,则插入了一个值
双层循环说明时间复杂度为O(n^2)
直接插入排序从后向前寻找序列中第一个大于待排序数的值,可见相等的值不会改变原先的位置,所以直接插入排序是一种稳定的排序