C语言程序—直接插入排序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#define MAX 50
typedef struct
{ int key;
char data;
} datatype;
int getsort(datatype x[] );
void insertsort(datatype x[],int n);
void print(datatype x[],int n);
void main()
{ datatype x[MAX];
int n,sel; /*sel 输入选择,n 排序记录的长度*/
printf("请输入你的选择:1---开始其它选择为退出\nyour choice =");
scanf("%d",&sel);
while(sel==1)
{ printf("\n请输入关键字序列,以-1结束输入:");
n=getsort(x);
printf("\n排序前的结果为:\n");
print(x,n);
printf("\n");
printf("排序的过程为:\n");
insertsort(x,n);
printf("\n直接插入排序后的结果为:\n");
print(x,n);
printf("\n");
printf("请输入你的选择:1---开始其它选择为退出\nyour choice =");
scanf("%d",&sel); } }
/*输入记录的关键字*/
int getsort(datatype x[] )
{ int i=0;
scanf("%d",&x[i].key);
while(x[i].key!=-1)
{ i++;
scanf("%d",&x[i].key); }
return i; }
/*直接插入排序*/
void insertsort(datatype x[],int n)
{ int i,j;
datatype temp; /*中间变量*/
for(i=1;i { temp=x[i]; j=i-1; while(j>-1 && temp.key { x[j+1]=x[j]; j--; } x[j+1]=temp; print(x,n); printf("\n"); } } void print(datatype x[],int n) { int i; for(i=0;i printf("%d\t",x[i].key); }