排序是计算机程序设计中一种重要的操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。

   我们之前所熟知的大概是冒泡排序,选择排序,但相对来说,这两种方法的效率不是太高,在这篇文章中我简单的介绍下直接插入排序。

   直接插入排序是一种简单的排序方法,它的基本操作是将一个记录插入到已排好的有序表中,从而得到一个新的.记录数增一的有序表。

  例如:一直待排序的一组记录的初始排列如下 所示:

         R(49), R(38), R(97), R(76), R(13), R(27)……

假设在排序过程中,前4个记录已按关键字递增的次序重新排列,构成一个含有4个记录的有序序列:{R(38), R(49), R(65), R(97)}先要将上面的初始序列的第五个记录插入到这个已拍好的记录中,则首先要在一排好序中进行查找以确定R(76)所应插入的位置,然后插入。

void Dir_Sort(Sqlist L) 
{ 
int i, j; 
for(i = 2; i < L.length; i++) 
    { 
if(LT(L.r[i].data, L.r[i-1].data)) 
        { 
            L.r[0] = L.r[i]; 
            L.r[i] = L.r[i-1]; 
for(j = i-2; LT(L.r[0].data, L.r[j].data); j--) 
            { 
                L.r[j+1] = L.r[j]; 
            } 
            L.r[j+1] = L.r[0]; 
        } 
    } 
for(i = 1;i <= L.length; i++) 
        printf("%d ",L.r[i].data); 
    printf("\n"); 
}