int a[6] = { 1, 11, 4, 2, 5, 6 };
for (int i = 1; i < 6; i++)//第一个数据不用插入,从第二个数据开始
{
if (a[i] < a[i - 1])//需要插入
{
int temp2 = a[i];//暂存当前要插入的值
int j;
for (j = i - 1; j >= 0 && a[j] > temp2; j--)//将当前值前面的值依次后移一位,直到值小于当前值
{
a[j + 1] = a[j];
}
a[j + 1] = temp2;//插入到正确的位置
}
for (int z = 0; z < 6;z++)
{
std::cout << a[z] << " ";
}
std::cout << std::endl;
}
运行结果
算法解释
插入排序是将数组中的每一个数与他的前一位进行比较,如果两个数的关系符合条件,则将该位置之前的并且满足条件的数据向后移动;直至找到不符关系的位置A,并且将该数据插入到A的下一位;重复此操作直至整个数组比较完毕;
循环限制由算法解释可以看出:在第一个循环处,循环的起始位置不能为0,否则在于前一位进行比较时会发生越界;
在第二个循环处:在判断该位置时,前面的数据已经满足顺序排列,所以当发现不符合调整判断时,在此处的下一个位置才是该数据的合适位置;



