插入排序算法
思路
插入排序的基本操作就是将一个数据插入到已经排好序的序列中,就能够的到一个个数+1的新有序序列。
首先将数列看成有序(左)和无序(右)的两部分:
因为左侧只有一个元素,那我们将其看作有序。之后的操作是从右侧无序的数列中,取出相邻的那一位临时保存,倒着和左边有序数列一一比较,如果大于比较的数,则该数向后移动,直到找到小于取出的数或者到下标为0的地方,结束,将取出的数存入。
代码实现
关键在于外层循环的i从1开始,因为左侧1个数我们认为他是有序的。
内层循环条件是j>0,否则会有边界问题。
int q[6] = {8, 7, 6, 9, 5, 3};
for (int i = 1; i < 6; i++)
{
int t = q[i];
int j;
for (j = i; j > 0 && q[j-1] > t; j--)
{
q[j] = q[j-1];
}
q[j] = t;
}