用简单插入排序法,对关键字值序列:9,2,20,45,3,18按从小到大的顺序进行排列,试打印出每趟排序的结果.

ming8008242022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
laojizhi 共回答了20个问题 | 采纳率100%
1.起始状态(9,2,20,45,3,18)
2.第一趟(2,9,20,45,3,18)
3.第二趟(2,9,20,45,3,18)
3.第三趟(2,9,20,45,3,18)
3.第四趟(2,3,9,20,45,18)
3.第五趟(2,3,9,18,20,45)
1年前

相关推荐

一、实验目的:掌握常用的查找与排序算法.二、实验内容 1、用简单插入排序法,对关键字值序列为:9,2,
wenlongb11年前1
我是错过的花絮14 共回答了22个问题 | 采纳率90.9%
第一题:
#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("输入需要排列的数字个数:最大100n");
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 {
x05x05 tab->r[j+1].data=tab->r[j].data;
x05x05 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)
x05x05x05 right=mid-1;
x05x05 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);
}

大家在问