作业帮 > 综合 > 作业

一、实验目的:掌握常用的查找与排序算法.二、实验内容 1、用简单插入排序法,对关键字值序列为:9,2,

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/26 04:58:37
一、实验目的:掌握常用的查找与排序算法.二、实验内容 1、用简单插入排序法,对关键字值序列为:9,2,
第一题:
#include
#define MAX 100
typedef int datatype;
typedef struct
{
datatype data;
}record;
typedef struct
{
record r[MAX+1];
int length;
}table;
void creat(table *tab)
{
printf("输入需要排列的数字个数:最大100\n");
scanf("%d",&tab->length);
for(int i=1;ilength;i++)
{ printf("请输入第%d个数据:",i);
scanf("%d",&tab->r[i]);
}
}
void print(table *tab)
{
\x05for(int i=1;ilength;i++)
\x05{
\x05 printf("%4d",tab->r[i]);
\x05} printf("\n");
}
void insertsort(table *tab)
{
\x05 int i,j;
\x05 printf("原始数据为:");
\x05 print(tab);
\x05 for(i=2;ilength;i++)
\x05 {
\x05 j=i-1;
\x05 tab->r[0].data=tab->r[i].data;
\x05 while(tab->r[0].datar[j].data)
\x05 {
\x05\x05 tab->r[j+1].data=tab->r[j].data;
\x05\x05 j--;
\x05
\x05 }
\x05 tab->r[j+1].data=tab->r[0].data;
\x05 \x05 printf("第%d次为 :",i-1);
\x05 print(tab);
\x05 }
}
void main()
{
table tab;
creat(&tab);
insertsort(&tab);
}
第二题:
#include
#define MAX 100
typedef int datatype;
typedef struct
{
datatype data;
}record;
typedef struct
{
record r[MAX+1];
int length;
}table;
void creat(table *tab)
{
printf("输入需要插入的数字个数:最大100");
scanf("%d",&tab->length);
for(int i=1;ilength;i++)
{ printf("请输入第%d个数据:",i);
scanf("%d",&tab->r[i]);
}
}
void print(table *tab)
{
\x05for(int i=1;ilength;i++)
\x05{
\x05 printf("%4d",tab->r[i]);
\x05} printf("\n");
}
void find(table *tab)
{ int find;
int i,j,left,right,mid;
\x05printf("输入你要查找的数:");
\x05scanf("%d",&find);
\x05for(i=2;ilength;i++)
\x05{
\x05 left=1;
\x05 right=i-1;
\x05 tab->r[0].data=find;
\x05 while(leftr[0].datar[mid].data)
\x05\x05\x05 right=mid-1;
\x05\x05 else left=mid+1;
\x05 }
\x05 if(tab->r[left].data==find)printf("\n你要查找的数在第%d个",left);
\x05}
}
void main()
{
table tab;
creat(&tab);
print(&tab);
find(&tab);
}