直接插入排序是一种简单的插入排序法。基本思想为:将待排序的记录按顺序逐个插入到已排好序的有序序列中,直到所有记录均插入,就得到一个新的有序的序列了。
算法思路:
(1)将待插入的记录(第i条数据)存到临时变量temp;
(2)从j(初始j=i-1)的位置开始往前查找合适的插入位置 (j--,一直到 temp>t[j] 的位置,都将t[j]往后移动一个位置)。
(3)将temp插入t[j+1]的位置,此时前j+1位都是有序的。
*算法使用双重循环,外循环进行n-1趟插入排序,内循环用于进行每一趟插入排序,即大小比较和记录后移,完成一次记录的插入过程。
void crinsert(int r[],int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
temp= r[i];
j = i-1;
while(j>=0 && r[j]>temp)
{
r[j+1] = r[j];
j--;
}
r[j+1] = temp;
}
}