查询与排序 实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学院专业班学号

协作者_____________教师评定_________________ 实验题目查询与排序

综合实验评分表

实验报告

一、实验目的与要求

1、掌握散列表的构造及实现散列查找;

2、掌握堆排序的算法;

3、综合比较各类排序算法的性能。

二、实验容

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#include"windows.h"

#define MAX 20

typedef struct{

unsigned long key;

int result;

char name[30];}RNode;

RNode t[MAX],r[MAX];

int h(unsigned long k) /*散列函数*/

{

return((k-3109005700)%11);

}

void insert(RNode t[],RNode x) /*插入函数,以线性探查方法解决冲突*/ {

int i,j=0;

i=h(x.key);

while((j0))

j++;

if(j==MAX) printf("full\n");

i=(i+j)%MAX;

if(t[i].key==0)

{t[i]=x;}

else

{

if(t[i].key==x.key)

printf("记录已存在!\n");

}

}

int search(RNode t[],unsigned long k) /*插入函数,以线性探查方法解决冲突*/ {

int i,j=0;

i=h(k);

while((j

j++;

i=(i+j)%MAX;

if(t[i].key==k)

return(i);

if(j==MAX)

return MAX;

else

return(-i);

}

void sift(RNode r[],int v,int w)

{

int i,j;

RNode a;

i=v;

a=r[i];

j=2*i+1;

while(j<=w)

{

if((jr[j+1].result))

j++;

if(a.result>r[j].result)

{r[i]=r[j];i=j;j=2*j+1;}

else break;

}

r[i]=a;

}

void sort(RNode r[],int n)

{

int i;

RNode y;

for(i=n/2-1;i>=0;i--)

sift(r,i,n-1);

for(i=n-1;i>0;i--)

{y=r[0];r[0]=r[i];r[i]=y;

printf("学生:%s\t学生学号:%u\t学生成

绩:%d\n",r[i].name,r[i].key,r[i].result);

sift(r,0,i-1);

}

printf("学生:%s\t学生学号:%u\t学生成

绩:%d\n",r[0].name,r[0].key,r[0].result);

}

int menu() /*菜单函数*/

{

int select;

printf("\n\n");

printf("\n");

printf("\t\t*************查找排序实验******************\n");

printf("\t\t*\n");

printf("\t\t*************欢迎进入系统******************\n");

printf("\t\t* menu: *\n");

printf("\t\t* 1.查找*\n");

printf("\t\t* 2.排序*\n");

printf("\t\t* 0.退出*\n");

printf("\t\t*******************************************\n");

printf("\n");

printf("\t\t\t请输入0--2\n ");

printf("\n");

printf("请选择您所要的操作(选择(0)退出):");

scanf("%d",&select);

getchar();

return(select);

}

void main() /*主函数*/

{

int i,s,n,select;

int j=0,m=0;

RNode y;

for(i=0;i

t[i].key=0; /*初始化*/

相关文档
最新文档