数据结构实验报告07由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构实验报告实验”。
长春理工大学
数据结构与算法
实验报告
实验题目: 查找 实验时间: 班级: 学号: 姓名:
实验地点:
一、实验目的及要求
1、掌握查找的不同方法,并能用高级语言实现查找算法。
2、熟练掌握顺序表的查找方法和有序顺序表的折半查找算法以及静态查找树的构造方法和查找算法。
3、掌握二叉排序树的生成、插入、删除、输出运算。
二、实验意义及原理
有序顺序表的二分查找的递归算法
三、算法分析
//二分法查找算法
int Search_Bin(SSTable ST,KeyType key){
//在有序表ST中折半查找其关键字等于key的数据元素。//若找到,则函数值为该元素在表中的位置,否则为0。low = 1;high = ST.length;//置区间初值 while(low
} return 0;//顺序表中不存在待查元素 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;//继续在后半区间进行查找
}//Search_Bin
四、源代码
#include #include using namespace std;
#define maxl 100 typedef int keytype;typedef char infotype [10];
typedef struct { keytype key;infotype data;}nodetype;typedef nodetype seqlist[maxl];
//二分法查找
int binsearch(seqlist r,int n,keytype k){
int low=0,high=n-1,mid,count=0;while(low
}
/*顺序查找
int seqsearch(seqlist r,int n,keytype k){
int i=0;while(i
} if(i>=n)return-1;printf(“ %d ”,r[i].key);i++;
} return-1;if(r[mid].key==k)return mid;if(r[mid].key>k)high=mid-1;else low=mid+1;
}*/ else {
} printf(“ %d ”,r[i].key);return i;void main(){
} seqlist r;int n=10;keytype k=5;int a[]={3,6,2,10,1,8,5,7,4,9},i;for(i=0;i
printf(“n”);printf(“二分法查找:n”);if((i=binsearch(r,n,k))!=-1)printf(“元素%d的位置是%dn”,k,n);else printf(“元素%d不在表中n”,k);printf(“n”);
五、运行结果
六、心得体会
1、经过试验掌握了顺序查找和二分查找的算法及其实现的程序。
2、掌握多种查找算法比较优劣,在实际运用中根据不同问题应用不同算法,可以使问题解决更加有效率。
3、折半(二分)发查找相比之前的顺序查找效率更高。
4、这次实验内容相对简单,实验仅仅要求二分查找,实际书上还有更多查找方法,需要多加练习。