《数据结构实验4》--查找

 实验五:查找

一、实验目的

1、掌握查找的不同方法,并能用高级语言实现查找算法。

2、熟练掌握顺序表的查找方法和有序顺序表的折半查找算法以及静态查找树的构造方法和查找算法。

3、掌握二叉排序树的生成、插入、删除、输出运算。

二、实验内容

1、有序顺序表的二分查找的递归算法。

2、对输入数据构造二叉查找树 ,建立二叉查找链表结构,并能实现查找、插入、删除等操作。

         二分查找:  

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int ii;
#define Debug(a,n) for(ii=0;ii<(n);ii++){cout<<(a)[ii]<<" ";}
#define ff 100005
int a[ff],n,m;
//递归式的二分查找
int Bin_Search(int p[],int low,int high,int key){
if(low < high){
int mid=(low+high)>>1;
if (p[mid] == key) return mid;
else if (p[mid] < key) return Bin_Search(p,mid+1,high,key);
else return Bin_Search(p,low,mid-1,key);
}
else return -1;
}
//非递归式的二分查找
int Search_Bin(int p[],int low,int high,int key){
int mid;
while(low < high){
int mid=(low+high)>>1;
if(p[mid] == key)return mid;
else if(p[mid] < key) low=mid+1;
else high=mid-1;
}
return -1;
}
int main(int argc,char *argv[]){
freopen("in.txt","r",stdin);
int i,j;
while(scanf("%d",&n)!=EOF){
for(i = 0; i < n; i ++){
scanf("%d",&a[i]);
}
Debug(a,n);
printf("\n");
sort(a,a+n);
Debug(a,n);
printf("\n----------------------------------\n");
scanf("%d",&m);
int pos = Bin_Search(a,0,n,m);
printf("the position of the num : %d you search is : %d\n",m,pos);
pos = Search_Bin(a,0,n,m);
printf("the position of the num : %d you search is : %d\n",m,pos);
printf("----------------------------------\n");
}
return 0;
}


你可能感兴趣的:(数据结构,二分查找)