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

1个回答

  • 第一题:

    #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);

    }