首页 > 代码库 > 插入排序

插入排序

#include<stdio.h>#define MAXSIZE 100   //假设文件长度,即待排序的记录数目typedef int KeyType;typedef struct{    KeyType key;}RcdType;typedef struct{    RcdType R[MAXSIZE+1];//存储待排序记录的一维数组,R或作为[0]闲置或作为“哨兵使用    int length;}SortSqlist;//关键字类型为KeyType自己定义void insertSort(SortSqlist &L){    int i,j;    for(i=2;i<=L.length;++i)        if(L.R[i].key<L.R[i-1].key){           L.R[0]=L.R[i];//复制为哨兵        for(j=i-1;L.R[0].key<L.R[j].key;j--)//在查找插入位置的同时记录后移         L.R[j+1]=L.R[j];        L.R[j+1]=L.R[0];//插入到正确位置        }}int main(){ int i; SortSqlist L; printf("输入排序的个数"); scanf("%d",&L.length); for(i=1;i<=L.length;++i)   scanf("%d",&L.R[i].key); insertSort(L); for(i=1;i<=L.length;++i)    printf("%d ",L.R[i].key); return 0;}

 

插入排序