- 将数组a分为有序的部分和无序的两个部分。前者在左边,后者在右边
- 开始有序的部分只有a[0],其余都属于无序的部分
- 每次取出无序部分的第一个(最左边)元素,把它加到有序部分,假设插入到合适位置p,则原p位置及其后面的有序部分元素,都向右移动一个位子,有序部分即增加了一个元素
- 直到无序部分没有元素
void InsertionSort(int a[],int size){
for(int i=1;i<size;++i)
{//a[i]是最左的无序元素,每次循环都将a[i]放到合适位置
for(int j=0;j<i;++j)
{
if(a[j]>a[i])
{//要把a[i]放到位置j,原下标j到i-1的元素都往后一一个位子
int temp=a[i];
for(int k=i;j>j;--k)
a[k]=a[k-1];
a[j]=temp;
break;
}
}
}
}