顺序表的存储结构

#define MAXITEM 100
typedef int KeyType;
typedef char ElemType[10];
struct SqList {
    KeyType key;
    ElemType data;
};

直接插入排序

void InsertSort(SqList R[],int n) {
    int i,j;
    SqList tmp;
    for(i=1; i<n; i++) {
        tmp=R[i];
        j=i-1;
        while(j>=0 && tmp.key<R[j].key) {
            R[j+1]=R[j];
            j--;
        }
        R[j+1]=tmp;
    }
}

希尔排序算法

void ShellSort(SqList R[],int n){
    int i,j,d;
    SqList tmp;
    d=n/2;
    while(d>0){
        for(i=d;i<n;i++){
            tmp=R[i];
            j=i-d;
            while(j>=0 && tmp.key<R[j].key){
                R[j+d]=R[j];
                j-=d;
            }
            R[j+d]=tmp;
        }
        d=d/2;
    }
}