一、实验目的
1、掌握查找的特点。
2、掌握折半查找的基本思想及其算法。
3、熟悉二叉排序树的特点,掌握二叉排序树的插入、删除操作。
二、实验内容
1、设有关键字序列k={ 5 ,14 ,18 ,21 ,23 ,29 ,31 ,35 },查找key=21和key=25的数据元素。
2、根据关键字序列{45、24、53、12、37、93}构造二叉排序树,并完成插入13删除关键字53和24的操作。
三、实验环境
Eclipse环境或C++编程环境
四、实验步骤
1、折半查找
(1)从键盘输入上述8个整数5 ,14 ,18 ,21 ,23 ,29 ,31 ,35,存放在数组bub[8]中,并输出其值。
(2)从键盘输入21,查找是否存在该数据元素,若存在,则输出该数据元素在表中的位置,否则给出查找失败的信息。
(3)从键盘输入25,查找是否存在该数据元素,若存在,则输出该数据元素在表中位置,否则给出查找失败的信息。
2、二叉排序树
(1)二叉排序树存储定义
(2)从键盘上输入六个整数45、24、53、12、37、9构造二叉排序树
(3)输出其中序遍历结果。
(4)插入数据元素13,输出其中序遍历结果。
(5)删除数据元素24和53,输出其中序遍历结果。
折半查找:
package shiyan4;
import java.util.Scanner;
public class BinarySearch {
public static void main(String[] args) {
System.out.println("请输入8个整数:");
Scanner sc=new Scanner(System.in);
int [] bub=new int[8];
for(int i=0;i<bub.length;i++) {
bub[i]=sc.nextInt();
System.out.print(bub[i]+" ");
}
Scanner sc1=new Scanner(System.in);
System.out.println("请输入要查找的数据:");
for(int i=0;i<2;i++) {
int x=sc.nextInt();
int loc=binarySearch(bub,bub.length,x);
System.out.print(loc);
}
}
private static int binarySearch(int [] bub,int length,int x) {
int left=0;
int right=length-1;
int mid;
while(left<=right) {
mid=(left+right)/2;
if(bub[mid]==x) {
return mid;
}
else if(bub[mid]>x) {
right=mid-1;
}
else {
left=mid+1;
}
}
return -1;
}
}
测试类:
package shiyan4;
import java.util.Scanner;
public class Test1 {
public static int binarySearch(int a[],int key){
int length