排序与查找实验报告java,实验五查找和排序实验报告.doc

您所在位置:网站首页 > 海量文档

&nbsp>&nbsp高等教育&nbsp>&nbsp实验设计

7e3e25dd1884ce9b7725a69a698d5758.gif

实验五查找和排序实验报告.doc4页

本文档一共被下载:2377011b61454b208b34ad77b4c31088.gif次,您可全文免费在线阅读后下载本文档。

072ad097814a33d1ad18e33ca14a5a9e.png

9ec2792a743ebdf4575ee09a03c275ea.png

7af312d1be2cfc1e59f15880bb7a7e7a.png

5f207613e329ca76dc87c76d3ff77e64.png

adf7aa3071c520b8a2063089f549261c.png

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

2.该文档所得收入(下载+内容+预览三)归上传者、原创者。

3.登录后可充值,立即自动返金币,充值渠道很便利

实验五 查找和排序

1、实验目的

1. 掌握顺序查找的基本方法

2. 掌握简单排序和二分法查找的算法。

2.能运用线性表的查找方法解决实际问题。

2、实验内容A,采用顺序查找算法查找值为x的元素的算法

2、给出一个无序表B,采用简单排序方法使该表递增有序,并采用二分查找算法查找值为x的元素的算法。

3、实验步骤

(1)仔细分析实验内容,给出其算法和流程图;

()用C语言实现该算法;

()给出测试数据,并分析其结果;

()在实验报告册上写出实验过程。

1.折半查找算法描述如下:

int Search_Bin(SSTable ST,KeyType key)

low=1;high=ST.length;

while(low<=high){

mid=(low+high)/2;

if EQ(key,ST.elem[mid].key) return mid;

else if LT(key,ST.elem[mid].key) high=mid -1;

else low=mid +1 ;

}

return 0;

}//Search_Bin;

2.顺序查找算法描述如下:

typedef struct {

ElemType *elem;

int length;

}SSTable;

顺序查找:

从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的

关键字和给定值比较相等,则查找成功,找到所查记录;反之,查找不成功。

int Search_Seq(SSTable ST,KeyType key){

ST.elme[0].key=key;

for(i=ST.length;

!EQ(ST.elem[i].key,key); --i);

return i; }

(3)写出源程序清单(加适当的注释)。

#include "stdio.h"

typedef struct BiTNode {

int data;

struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

void insert(BiTree *bt,BiTree s){ //在二叉树中插入一个新节点,并将较大数至于右子树,较小数至于左子树

if (*bt==NULL) *bt=s;

else if (s->data<=(*bt)->data)

insert(&((*bt)->lchild),s);

else if (s->data>(*bt)->data)

insert(&((*bt)->rchild),s);

}

void ZXBL(BiTree bt) { //中序遍历,二叉树已排好顺序

if(bt!=NULL){

ZXBL (bt->lchild);

printf("%5d",bt->data);

ZXBL (bt->rchild);

}

}

BiTree select (BiTree bt,int key) //在二叉排序树bt中查找关键字等于给定值的结点是否存在

{

if(bt==NULL) return NULL;

else if(bt->data==key)

return bt;

else if(keydata)

return select (bt->lchild,key);

else return select (bt->rchild,key);

}void main()

{

char ch;

int key;

BiTree s,bt=NULL;

int i=0; //建立一个二叉树,元素从键盘输入,直到回车为止

printf("\n请输入要一列整数,以空格隔开,回车结束. \n");

while(ch!='\n'){

scanf("%d",&key);

s=(BiTree)malloc(sizeof(BiTNode));

s->data=key;

s->lchild=s->rchild=NULL;

insert (&bt,s);

ch=getchar();

}

printf("\n排序后: \n");

ZXBL (bt);//中序遍历

while(1)

{

printf("\n输入你要查找的关键字: ");

scanf("%d",&key);

s=select(bt,key);

if(s!=NULL) printf("%d 查找成功!",s->data);

else printf("未发现你输入的数!");

printf("\n再次查找?(Y/N): ");

ch=getch();

if(ch!

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名:

验证码:

c9f2bced460b0329ba0aadbbc3f0fc71.png

匿名?

发表评论

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值